我们在之前学到过,使用字节流时,会出现乱码问题,其实使用字符流也会出现。因为在默认情况下,我们使用字符流处理时,读取文件默认使用的是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();
}
}
104

被折叠的 条评论
为什么被折叠?



