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

      FileOutputStream类和FileInputStream类,他们的父类分别是OutputStream类和InputStream类。FileOutputStream类FileInputStream类都没有子类了。它们的父类都是抽象类不能实例化。所以FileOutputStream类和FileInputStream类,就是其父类最直接的现。

      FileInputStream类在创建的时候有2个构造方法,一个直接指定输入流的IO设备的路径,或者是指定一个File类对象。并且指定路径或者File对象必须是存在并且没有别其他IO输入或输出流打开的。下面是这2个类的一个小例子:特别注意的代码中的close方法上面的注释有错误,刷先的方法调用是在write方法调用的。这一点区别字符流里面。

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

    同上面一样,FileReader类和FileWriter类 也是Reader类和Writer类的子类。但是他是字符流了。可以直接操作字符或者直接操作文本。

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

import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileStream2 { public static void main(String[] args) throws Exception { WriterAndReader(); } private static void WriterAndReader() throws IOException, FileNotFoundException { FileWriter writer = new FileWriter("file2.txt"); writer.write("您好 中国"); writer.flush(); writer.close(); char[] chr = new char[1024]; FileReader reader = new FileReader("file2.txt"); int i = reader.read(chr); System.out.println(new String(chr, 0, i)); reader.close(); } }

你可能感兴趣的:(io,java,exception,string,file,import)