?? }
查看hello.txt会看到“你好”
当然也可以一个字节一个字节的写。
?? /** ?? * 字节流
?? * 向文件中一个字节一个字节的写入字符串 ?? * */
?? import java.io.*; ?? class hello{
?? public static void main(String[] args) throws IOException { ?? String fileName=\ ?? File f=new File(fileName);
?? OutputStream out =new FileOutputStream(f); ?? String str=\你好\
?? byte[] b=str.getBytes();
?? for (int i = 0; i < b.length; i++) { ?? out.write(b[i]); ?? }
?? out.close(); ?? } ?? }
结果还是:“你好”
向文件中追加新内容:
?? /** ?? * 字节流
?? * 向文件中追加新内容: ?? * */
?? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException { ??? String fileName=\ ??? File f=new File(fileName);
??? OutputStream out =new FileOutputStream(f,true); ??? String str=\
??? //String str=\可以换行 ??? byte[] b=str.getBytes();
??? for (int i = 0; i < b.length; i++) { ??? out.write(b[i]);
??? }
??? out.close(); ??? } ??? }
【运行结果】: 你好Rollen
【读取文件内容】
??? /** ??? * 字节流 ??? * 读文件内容 ??? * */
??? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException { ??? String fileName=\ ??? File f=new File(fileName);
??? InputStream in=new FileInputStream(f); ??? byte[] b=new byte[1024]; ??? in.read(b); ??? in.close();
??? System.out.println(new String(b)); ??? } ??? }
【运行结果】 你好Rollen
Rollen_
但是这个例子读取出来会有大量的空格,我们可以利用in.read(b);的返回值来设计程序。如下:
??? /** ??? * 字节流 ??? * 读文件内容 ??? * */
??? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException {
??? String fileName=\ ??? File f=new File(fileName);
??? InputStream in=new FileInputStream(f); ??? byte[] b=new byte[1024]; ??? int len=in.read(b); ??? in.close();
??? System.out.println(\读入长度为:\ ??? System.out.println(new String(b,0,len)); ??? } ??? }
【运行结果】: 读入长度为:18
你好Rollen
Rollen
读者观察上面的例子可以看出,我们预先申请了一个指定大小的空间,但是有时候这个空间可能太小,有时候可能太大,我们需要准确的大小,这样节省空间,那么我们可以这样干:
??? /** ??? * 字节流
??? * 读文件内容,节省空间 ??? * */
??? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException { ??? String fileName=\ ??? File f=new File(fileName);
??? InputStream in=new FileInputStream(f); ??? byte[] b=new byte[(int)f.length()]; ??? in.read(b);
??? System.out.println(\文件长度为:\??? in.close();
??? System.out.println(new String(b)); ??? } ??? }
文件长度为:18
你好Rollen
Rollen
将上面的例子改为一个一个读:
??? /** ??? * 字节流
??? * 读文件内容,节省空间 ??? * */
??? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException { ??? String fileName=\ ??? File f=new File(fileName);
??? InputStream in=new FileInputStream(f); ??? byte[] b=new byte[(int)f.length()]; ??? for (int i = 0; i < b.length; i++) { ??? b[i]=(byte)in.read(); ??? }
??? in.close();
??? System.out.println(new String(b)); ??? } ??? }
输出的结果和上面的一样。
细心的读者可能会发现,上面的几个例子都是在知道文件的内容多大,然后才展开的,有时候我们不知道文件有多大,这种情况下,我们需要判断是否独到文件的末尾。
??? /** ??? * 字节流 ??? *读文件 ??? * */
??? import java.io.*; ??? class hello{
??? public static void main(String[] args) throws IOException { ??? String fileName=\ ??? File f=new File(fileName);
??? InputStream in=new FileInputStream(f); ??? byte[] b=new byte[1024]; ??? int count =0; ??? int temp=0;
??? while((temp=in.read())!=(-1)){
??? b[count++]=(byte)temp; ??? }
??? in.close();
??? System.out.println(new String(b)); ??? } ??? }
【运行结果】 你好Rollen
Rollen_
提醒一下,当独到文件末尾的时候会返回-1.正常情况下是不会返回-1的 三
您所在的位置:开发 > Java > 热点推荐 > Java中的IO整理完整版(3)
Java中的IO整理完整版(3)
2011-09-19 16:17 Rollen Holt Rollen Holt 我要评论(9) 字号:T | T
本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真。代码是写出来的,不是看出来的。
AD:
字符流
【向文件中写入数据】 现在我们使用字符流
? ? ? ?
/** * 字符流 * 写入数据 * */