Skip to content

Commit c42c8c8

Browse files
committed
java io
1 parent 906dc4c commit c42c8c8

1 file changed

Lines changed: 52 additions & 47 deletions

File tree

‎JavaBase/08. Java IO流.md‎

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -64,63 +64,68 @@ IO 流用来处理设备之间的数据传输,Java 程序中,对于数据的
6464
一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了。
6565
##5. Java IO流对象
6666
### 5.1 输入字节流InputStream
67-
1. ByteArrayInputStream:字节数组输入流,该类的功能就是从字节数组(byte[])中进行以字节为单位的读取,也就是将资源文件都以字节的形式存入到该类中的字节数组中。
68-
2. PipedInputStream:管道字节输入流,它和PipedOutputStream一起使用,能实现多线程间的管道通信。
69-
3. FilterInputStream :装饰者模式中处于装饰者,具体的装饰者都要继承它,所以在该类的子类下都是用来装饰别的流的,也就是处理类。具体装饰者模式在下面会讲解到,到时就明白了。
70-
4. BufferedInputStream:缓冲流,对处理流进行装饰,增强,内部会有一个缓存区,用来存放字节,每次都是将缓存区存满然后发送,而不是一个字节或两个字节这样发送。效率更高。
71-
5. DataInputStream:数据输入流,它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。
72-
6. FileInputSream:文件输入流。它通常用于对文件进行读取操作。
73-
7. File:对指定目录的文件进行操作,具体可以查看讲解File的博文。注意,该类虽然是在IO包下,但是并不继承自四大基础类。
74-
8. ObjectInputStream:对象输入流,用来提供对“基本数据或对象”的持久存储。在反序列化中使用。
67+
1. ByteArrayInputStream:字节数组输入流,该类的功能就是从字节数组(byte[])中进行以字节为单位的读取,也就是将资源文件都以字节的形式存入到该类中的字节数组中。
68+
2. PipedInputStream:管道字节输入流,它和PipedOutputStream一起使用,能实现多线程间的管道通信。
69+
3. FilterInputStream :装饰者模式中处于装饰者,具体的装饰者都要继承它,所以在该类的子类下都是用来装饰别的流的,也就是处理类。具体装饰者模式在下面会讲解到,到时就明白了。
70+
4. BufferedInputStream:缓冲流,对处理流进行装饰,增强,内部会有一个缓存区,用来存放字节,每次都是将缓存区存满然后发送,而不是一个字节或两个字节这样发送。效率更高。
71+
5. DataInputStream:数据输入流,它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。
72+
6. FileInputSream:文件输入流。它通常用于对文件进行读取操作。
73+
7. File:对指定目录的文件进行操作,具体可以查看讲解File的博文。注意,该类虽然是在IO包下,但是并不继承自四大基础类。
74+
8. ObjectInputStream:对象输入流,用来提供对“基本数据或对象”的持久存储。在反序列化中使用。
75+
7576
### 5.2 输出字节流OutputStream
76-
1. OutputStream 是所有的输出字节流的父类,它是一个抽象类。
77-
2. ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据。
78-
3. ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流,同样在序列化中使用。
77+
1. OutputStream 是所有的输出字节流的父类,它是一个抽象类。
78+
2. ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据。
79+
3. ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流,同样在序列化中使用。
80+
7981
### 5.3 字符输入流`Reader`
80-
1. `Reader`:所有的输入字符流的父类,它是一个抽象类。
81-
2. `CharReader`、`StringReader`:两种基本的介质流,它们分别将Char 数组、String中读取数据。`PipedReader` 是从与其它线程共用的管道中读取数据。
82-
3. `BufferedReader`:一个装饰器,它和其子类负责装饰其它Reader 对象。
83-
4. `FilterReader`:所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号。
84-
5. `InputStreamReader`:一个连接字节流和字符流的桥梁,它将字节流转变为字符流。 FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。
82+
1. `Reader`:所有的输入字符流的父类,它是一个抽象类。
83+
2. `CharReader`、`StringReader`:两种基本的介质流,它们分别将Char 数组、String中读取数据。`PipedReader` 是从与其它线程共用的管道中读取数据。
84+
3. `BufferedReader`:一个装饰器,它和其子类负责装饰其它Reader 对象。
85+
4. `FilterReader`:所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号。
86+
5. `InputStreamReader`:一个连接字节流和字符流的桥梁,它将字节流转变为字符流。 FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。
87+
8588
### 5.4 字符输出流Writer
86-
1. Writer:所有的输出字符流的父类,它是一个抽象类。
87-
2. CharArrayWriter、StringWriter:两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,
88-
3. BufferedWriter:一个装饰器为Writer 提供缓冲功能。
89-
4. PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。
90-
5. OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是这么一个实现此功能的类。功能和使用和OutputStream类似。
89+
1. Writer:所有的输出字符流的父类,它是一个抽象类。
90+
2. CharArrayWriter、StringWriter:两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,
91+
3. BufferedWriter:一个装饰器为Writer 提供缓冲功能。
92+
4. PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。
93+
5. OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是这么一个实现此功能的类。功能和使用和OutputStream类似。
94+
9195
## 6. Java IO流方法
9296
### 6.1 字节流方法
9397
字节输入流InputStream主要方法:
94-
- read() :从此输入流中读取一个数据字节。
95-
- read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
96-
- read(byte[] b, int off, int len) :从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
97-
- close():关闭此输入流并释放与该流关联的所有系统资源。
98-
字节输出流OutputStream主要方法:
98+
read() :从此输入流中读取一个数据字节。
99+
read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
100+
read(byte[] b, int off, int len) :从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
101+
close():关闭此输入流并释放与该流关联的所有系统资源。
99102

100-
- write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。
101-
- write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
102-
- write(int b) :将指定字节写入此文件输出流。
103-
- close() :关闭此输入流并释放与该流关联的所有系统资源。
103+
字节输出流OutputStream主要方法:
104+
write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。
105+
write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
106+
write(int b) :将指定字节写入此文件输出流。
107+
close() :关闭此输入流并释放与该流关联的所有系统资源。
104108

105109
### 6.2 字符流方法
106110
字符输入流Reader主要方法:
107-
- read():读取单个字符。
108-
- read(char[] cbuf) :将字符读入数组。
109-
- read(char[] cbuf, int off, int len) : 将字符读入数组的某一部分。
110-
- read(CharBuffer target) :试图将字符读入指定的字符缓冲区。
111-
- flush() :刷新该流的缓冲。
112-
- close() :关闭此流,但要先刷新它。
113-
字符输出流Writer主要方法:
114-
115-
- write(char[] cbuf) :写入字符数组。
116-
- write(char[] cbuf, int off, int len) :写入字符数组的某一部分。
117-
- write(int c) :写入单个字符。
118-
- write(String str) :写入字符串。
119-
- write(String str, int off, int len) :写入字符串的某一部分。
120-
- flush() :刷新该流的缓冲。
121-
- close() :关闭此流,但要先刷新它。
122-
- BufferedWriter类newLine() :写入一个行分隔符。这个方法会自动适配所在系统的行分隔符。
123-
- BufferedReader类readLine() :读取一个文本行。
111+
read():读取单个字符。
112+
read(char[] cbuf) :将字符读入数组。
113+
read(char[] cbuf, int off, int len) : 将字符读入数组的某一部分。
114+
read(CharBuffer target) :试图将字符读入指定的字符缓冲区。
115+
flush() :刷新该流的缓冲。
116+
close() :关闭此流,但要先刷新它。
117+
118+
字符输出流Writer主要方法:
119+
write(char[] cbuf) :写入字符数组。
120+
write(char[] cbuf, int off, int len) :写入字符数组的某一部分。
121+
write(int c) :写入单个字符。
122+
write(String str) :写入字符串。
123+
write(String str, int off, int len) :写入字符串的某一部分。
124+
flush() :刷新该流的缓冲。
125+
close() :关闭此流,但要先刷新它。
126+
BufferedWriter类newLine() :写入一个行分隔符。这个方法会自动适配所在系统的行分隔符。
127+
BufferedReader类readLine() :读取一个文本行。
128+
124129
## 7. 字节流与字符流的转换
125130
字节流与字符流的转换主要用于文本文件在硬盘中以字节流的形式存储时,通过InputStreamReader读取后转化为字符流给程序处理,程序处理的字符流通过OutputStreamWriter转换为字节流保存。
126131

0 commit comments

Comments
 (0)