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

FileOutputStream类和FileInputStream类,他们的父类分别是OutputStream类和InputStream类。FileOutputStream类FileInputStream类都没有子类了。它们的父类都是抽象类不能实例化。所以FileOutputStream类和FileInputStream类,就是其父类最直接的现。      FileInputStream类在创建的时候有2个构造方法,一个直接指定输入流的IO设备的路径,或者是指定一个File类对象。并且指定路径或者File对象必须是存在并且没有别其他IO输入或输出流打开的。下面是这2个类的一个小例子
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.lostinai.com".getBytes());// 因为是字节流,所以只能是一次写入一个字节。		
		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方法,需要我们自己调用


java中的字符是采用Unicode编码的,是双字节的。上面的FileInputStream和FileOutputStream都是用来处理字节的,在处理上面的字符串的时候需要把字符串转换成字节以后再写入到文件,在读取字符串的时候也是先读到的字节数组,然后再将它转换成为字符串的。这就需要编写额外的字节与字符之间转换的代码。java中专门有一个单独的类用来对IO设备进行字符的输入和输出,例如刚才的例子就可以用FileReader和FileWriter。

Reader类和Writer类专门用于文本文件的读取,而InputStream和OutputStream则是用于对二进制格式文件的内容读取

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();
	}
}



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