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的基础

**/

你可能感兴趣的:(Java IO流 FileOutputStream类 和 FileInputStream类 FileReader类和FileWriter类)