一、按操作方式分
Reader-字符读取
- 节点流
- FileReader
- PipedReader
- CharArrayReader
- 处理流
- BufferedReader
- InputStreamReader
Writer-字符写出
- 节点流
- FileWriter
- PipedWriter
- CharArrayWriter
- 处理流
- BufferedWriter
- OutputStreamWriter
- PrintWriter
InputStream-字节读取
- 节点流
- FileInputStream
- PipedInputStream
- ByteArrayInputStream
- 处理流
- BufferedInputStream
- DataInputStream
- ObjectInputStream
- SequenceInputStream
OutputStream-字节写出
- 节点流
- FileOutputStream
- PipedOutputStream
- ByteArrayOutputStream
- 处理流
- BufferedOutputStream
- DataOutputStream
- ObjectOutputStream
- PrintStream
节点流:可以从或向一个特定的地方(节点)读写数据。
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
二、按操作对象分类
缓冲操作:BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream
基本数据类型操作:DataInputStream DataOutputStream
对象序列化操作:ObjectInputStream ObjectOutputStream
转化控制:InputStreamReader OutputStreamWriter
打印控制:PrintWriter PrintStream
文件操作:FileReader FileWriter FileInputStream FileInputStream
管道操作:PipedReader PipedWriter PipedInputStream PipedOutputStream
数组操作:ByteArrayInputStream ByteArrayOutputStream CharArrayWriter CharArrayReader
个人遇到最常用的场景,就是文件处理了:
1.普通文件复制,复制mesh到mesh2
File inputFile = new File("D:\\file\\mesh.txt");
File outFile = new File("D:\\file\\mesh2.txt");
FileInputStream fileInputStream = new FileInputStream(inputFile);
FileOutputStream fileOutputStream = new FileOutputStream(outFile);
byte[] bytes = new byte[1024]; //每次读的字节
int len=0;
while((len=fileInputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,len);
}
fileOutputStream.close();
fileInputStream.close();
2.缓冲流方式处理
File inputFile = new File("D:\\file\\mesh.txt");
File outFile = new File("D:\\file\\mesh2.txt");
FileInputStream fileInputStream = new FileInputStream(inputFile);
FileOutputStream fileOutputStream = new FileOutputStream(outFile);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte[] bytes = new byte[1024]; //每次读的字节
int len=0;
while((len=bufferedInputStream.read(bytes))!=-1){
bufferedOutputStream.write(bytes,0,len);
}
bufferedOutputStream.close();
bufferedInputStream.close();
fileOutputStream.close();
fileInputStream.close();