我们在之前学到过,使用字节流时,会出现乱码问题,其实使用字符流也会出现。因为在默认情况下,我们使用字符流处理时,读取文件默认使用的是UTF-8编码。如果我们的文件采用的是gbk编码怎么办呢?如果仍然采取这样的读取方式,就会出现乱码问题。
那么如何解决呢,java中,字节流的读取可以使用不同的编码方式读取,只需要将字节流包装成字符流,再通过Buffered的包装,就可以提高效率的同时,不会出现乱码错误。
为了解决字节流转化成字符流的问题,所以,我们引入了转换流。
转化流
InputStreamReader :Reader的子类,可以将InputStream转换成Reader
OutputStreamWriter:Writer的子类,可以将OutputSteam转换成Writer
package IO流.转换流; import java.io.*; /** * @program:多线程和IO * @descripton:使用转换流复制粘贴 * @author:ZhengCheng * @create:2021/10/6-16:28 **/ public class OutputStreamReader_ { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\new2.txt"), "gbk")); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\new1.txt"),"UTF-16")); String temp = ""; while ((temp = br.readLine()) != null){ System.out.println(temp); bw.write(temp); bw.flush(); bw.newLine(); } br.close(); bw.close(); } }