刚刚接触java的输入输出的时候会觉得很复制,很多的类
做点笔记
reader/writer 和 inputstream/outputstream 是同级别不同功能的类
用于字符的 输入输出的类的树结构
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/package-tree.html
- java.io.Reader (implements java.io.Closeable, java.lang.Readable)
- java.io.BufferedReader
- java.io.InputStreamReader
- java.io.FileReader
InputStreamReader 是具有字节到字符的转换功能,BufferedReader 是具有缓冲功能,可以提高效率,所以其他的reader都应该用InputStreamReader 包装一下,所以经常会看到如下的代码:
接受键盘的输入实例:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));接受文件的输入实例:
BufferedReader in
= new BufferedReader(new FileReader(filename));用于字节流的
- java.io.InputStream (implements java.io.Closeable)
- java.io.ByteArrayInputStream
- java.io.FileInputStream
- java.io.FilterInputStream
- java.io.BufferedInputStream
所以看不同种类的输入输出要选择不同的方式
FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用
FileReader
。对于对象到文件的输入输出
例如,要写入可通过 ObjectInputStream 中的示例读取的对象,请执行以下操作:
FileOutputStream fos = new FileOutputStream("t.tmp"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeInt(12345); oos.writeObject("Today"); oos.writeObject(new Date()); oos.close();
例如,要按 ObjectOutputStream 中示例的写入从流读取,请执行以下操作:
FileInputStream fis = new FileInputStream("t.tmp"); ObjectInputStream ois = new ObjectInputStream(fis); int i = ois.readInt(); String today = (String) ois.readObject(); Date date = (Date) ois.readObject(); ois.close();