目录
5.1OutputStreamWriter就是把字符流转换为字节流的过程
5.2InputStreamReader就是把字节流转换为字符流的过程
一、输入输出流
外设(外部设备)比如磁盘,网络等读取数据到运行内存中称为输入流(input)
从运行内存中读取数据写入到外设中,称为输出流(output)。
二、流分为字节流和字符流
2.1字节流:
概念:字节流以字节(8 位)为单位读取数据,适用于处理二进制数据,如图像、音频、视频等。
2.2字符流:
概念:符流以字符为单位读取数据,适用于处理文本数据。字符流在读取时会考虑字符编码,将字节转换为字符。
2.3总结:
字节流适用于处理二进制文件
字符流适用于处理文本文件
三、输出字节流和字符流常见类
3.1输出字节流:
- 1.OutputStream 字节输出流的基类
- 2.FileOutputStream 用于将字节数据写入文件
- 3.ByteArrayOutputStream 用于将字节数据写入字节数组
3.2输出字符流:
- 1.Writer 字符输出流的基类
- 2.FileWriter 将字符写入文件
- 3.BufferedWriter 提供缓冲功能的字符输出流,可以提高写入效率
四、输入字节流和字符流常见类
4.1输入字节流:
- 1.InputStream 字节输入流的基类
- 2.FileInputStream 从文件读取字节数据
- 3.ByteArrayInputStream 从字节数组读取字节数据
4.2输入字符流:
- 1.Reader 字符输入流的基类
- 2.FileReader 从文件读取字符数据
- 3.BufferedReader:提供缓冲功能的字符输入流,可以提高读取效率
五、字节流与字符流的相互转换
5.1OutputStreamWriter就是把字符流转换为字节流的过程
5.1.1举例
public static void writeTest() {
try (OutputStream outputStream = new FileOutputStream("example.txt");
Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
bufferedWriter.write("hello word!");
} catch (IOException e) {
e.printStackTrace();
}
}
在这个例子中:
- FileOutputStream 是字节流,用于将字节数据写入文件。
- OutputStreamWriter 是将字符流转换为字节流的桥梁,通过指定的字符编码将字符编码为字节并写入。
- BufferedWriter 是带有缓冲功能的字符流,用于更高效地写入文本数据。
5.1.2总结:
- 字节输出流:用于写入字节数据,适合处理二进制文件。
- 字符输出流:用于写入字符数据,适合处理文本文件。
- 字节流与字符流的转换:通过 OutputStreamWriter 等类实现,将字符流编码为字节流。
5.2InputStreamReader就是把字节流转换为字符流的过程
5.2.1举例
public static void readTest() {
try (
InputStream inputStream = new FileInputStream("example.txt");
Reader reader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(reader)
) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
在这个例子中:
- FileInputStream 是字节流,直接从文件中读取字节。
- InputStreamReader 是将字节流转换为字符流的桥梁,通过指定的字符编码将字节解码为字符。
- BufferedReader 是带有缓冲功能的字符流,用于更高效地读取文本数据。
5.2.2总结
- 字节输入流:用于读取字节数据,适合处理二进制文件。
- 字符输入流:用于读取字符数据,适合处理文本文件。
- 字节流与字符流的转换:通过 InputStreamReader 等类实现,将字节流转换为字符流。