可以理解为由水管连接 数据像水流一样在水管中流动
字节流:
- InputStream
- FileInputStream (文件输入字节流)
- FilterInputStream (装饰器 抽象类)
- BufferedInputStream (缓冲输入字节流)
- DataInputStream (基本数据类型输入字节流) (与DataOutputStream搭配使用)
示例:
InputStream in =
new BufferedInputStream(new FileInputStream(filePath)) ;
- OutputStream
- FileOutputStream (文件输出字节流)
- FilterOutputStream (装饰器 抽象类)
- BufferedOutputStream (缓冲输出字节流)
- DataOutputStream (基本数据类型输出字节流) (与DataInputStream搭配使用)
示例:
OutputStream out =
new PrintStream(new BufferedOutputStream(
new FileOutputStream(filePath))) ;
- RandomAccessFile (自我独立的类)
其中构造器还需要传入第二个参数 r:随机读 rw:读写
有定位当前所处的文件位置,文件内移动位置,判断文件大小,标注位置,重新设定位置等操作
但是其大多数功能由nio存储映射文件所取代
示例:
RandomAccessFile raf = new RandomAccessFile(filePath,"rw") ;
解析DataInputStream 与 DataOutputStream
只要两个平台都有java那么使用这两个字节流就不会出现数据不同的情况 但是我们必须要知道流中数据的确切位置(可使用对象序列化或者XML的方式解决)
字符流:
- Reader
- FileReader (文件字符输入流)
- FilterReader (修饰器 抽象类)
- BufferedReader (缓冲字符输入流)
- 与字节流的适配器 InputStreamReader
示例:
BufferedReader reader =
new BufferedReader(new FileReader(filePath) ;
适配器使用示例:
Reader reader =
new BufferedReader(new InputStreamReader(
new FileInputStream(filePath))) ;
- Writer
- FileWriter (文件字符输出流)
- PrintWriter (格式化字符输出流)
- FilterWriter (修饰器 抽象类)
- BufferedWriter (缓冲字符输出流)
- 与字节流的适配器 OutputStreamWriter
示例:
PrintWriter writer = new PrintWriter(filePath) ; (默认使用缓冲流)
适配器使用示例:
PrintWriter writer =
new PrintWriter(new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(filePath)))) ;