Java字符流进阶核心是处理字符编码与高效缓冲流的应用,解决字节流可能出现的中文乱码问题,并提升IO性能。

1. 核心:解决字符编码问题(转换流)

字节流读取文本时若编码不匹配会乱码,字符流的InputStreamReader和OutputStreamWriter可指定编码,是进阶的关键。

• InputStreamReader:将字节输入流(如FileInputStream)转换为字符输入流,可指定编码(如UTF-8、GBK)。

• OutputStreamWriter:将字符输出流转换为字节输出流,同样支持指定编码,避免写文件时乱码。

示例逻辑:用UTF-8编码读取文本文件
InputStreamReader isr = new InputStreamReader(new FileInputStream("test.txt"), "UTF-8");

2. 高效:缓冲字符流(BufferedReader/Writer)

直接使用FileReader/FileWriter效率低,缓冲流通过内置缓冲区减少IO次数,是实际开发的首选。

• BufferedReader:自带8KB缓冲区,新增readLine()方法,可直接读取整行文本(无需自己拼接字符)。

• BufferedWriter:自带8KB缓冲区,新增newLine()方法,可跨平台输出换行符(Windows\n\r、Linux\n)。

核心优势:比普通字符流快10倍以上,且API更易用(如读整行、跨平台换行)。

3. 特殊场景:处理字符数组与字符串

• CharArrayReader/CharArrayWriter:以字符数组为数据源/目标,适合内存中处理字符数据(如临时缓存文本)。

• StringReader/StringWriter:以字符串为数据源/目标,无需操作文件,常用于字符串的IO风格处理(如解析字符串内容)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐