Java IO流 FileOutputStream类 和 FileInputStream类 FileReader类和FileWriter类

转自:http://blog.csdn.net/tianzhw/article/details/6117692

 

FileOutputStream类和FileInputStream类,他们的父类分别是OutputStream类和InputStream类。

FileOutputStream类FileInputStream类都没有子类了。它们的父类都是抽象类不能实例化。

所以FileOutputStream类和FileInputStream类,就是其父类最直接的实现。

FileInputStream类在创建的时候有2个构造方法,

一个直接指定输入流的IO设备的路径,或者是指定一个File类对象。

并且指定路径或者File对象必须是存在并且没有别其他IO输入或输出流打开的。

下面是这2个类的一个小例子:特别注意的代码中的close方法上面的注释有错误,刷先的方法调用是在write方法调用的。这一点区别字符流里面。

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 public class FileStream {
 4     /**
 5      * @param args
 6      * @throws FileNotFoundException
 7      */
 8     public static void main(String[] args) throws Exception {
 9         // TODO Auto-generated method stub
10         FileOutputStream outputStream = new FileOutputStream("file.txt");
11         outputStream.write("www.tianzhw.com".getBytes());// 因为是字节流,所以只能是一次写入一个字节。
12         /*
13          * 一般具有flush方法的输出流,其内部都是有缓存区实现的。
14          * 其原因就是每次都操作硬盘对cup的使用率太大,
15          * 通过缓存区的实现就可以降低了cup的使用率。
16          */
17         outputStream.flush();
18         /**
19          * close方法一般在实现中,都会调用flush 方法。
20          */
21         outputStream.close();
22         byte[] b = new byte[1024];
23         FileInputStream in = new FileInputStream("file.txt");
24         int i = in.read(b);//方法的返回的数字,就是读出了多少个字节
25         System.out.println(new String(b, 0, i));// 这里读取也是一个字节后然后给你转化成字符串输出
26         in.close();
27     }
28 }

    同上面一样,FileReader类和FileWriter类 也是Reader类和Writer类的子类。

    但是他是字符流了。可以直接操作字符或者直接操作文本。

    我们这里要注意的FileWriter的write方法内部没有调用flush方法,需要我们自己调用。

 1 import java.io.FileNotFoundException;
 2 import java.io.FileReader;
 3 import java.io.FileWriter;
 4 import java.io.IOException;
 5 public class FileStream2 {
 6     public static void main(String[] args) throws Exception {
 7         WriterAndReader();
 8     }
 9     private static void WriterAndReader() throws IOException,
10             FileNotFoundException {
11         FileWriter writer = new FileWriter("file2.txt");
12         writer.write("您好 中国");
13         writer.flush();
14         writer.close();
15         char[] chr = new char[1024];
16         FileReader reader = new FileReader("file2.txt");
17         int i = reader.read(chr);
18         System.out.println(new String(chr, 0, i));
19         reader.close();
20     }
21 }

 /**

FileReader、FileWriter分别是对文本文件的读写使用的封装了一些字符集操作。
FileInputStream/FileOutputStream是集成InputStream/OutputStream的文件读写流,用于读写任何文件,
可以作为构造其他InputStream/OutputStream的基础

**/

posted @ 2013-03-14 14:08  古来征战几人回  阅读(469)  评论(0编辑  收藏  举报