IO流第38天(转换流InputStreamReader和OutputStreamWriter)
转换流InputStreamReader和OutputStreamWriter
- InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
- OutputStreamWriter:Writer的子类,可以将OutputStream(字节流)包装成Writer(字符流)
- 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文乱码问题,所以建议将字节流转换成字符流
- 可以在使用时指定编码格式(比如utf-8,gbk,gb2312等)
InputStreamReader可以传入一个Input对象,而且可以指定处理的编码方式
OutputStreamWriter可以传入一个Outnput对象,而且可以指定处理的编码方式
![image]()
![image]()
InputStreamReader案例:
演示使用InputStreamReader转换流解决中文乱码问题
将字节流FileInputStream转换成InputStreamReader字符流
public static void main(String[] args) throws IOException {
String filepath = "d:\\a.txt";
//将 FileInputStream转成InputStreamReader,指定编码为gbk
InputStreamReader isr = new InputStreamReader(new FileInputStream(filepath), "gbk");
//将InputStreamReader传入给BufferedReader
BufferedReader br = new BufferedReader(isr);
//读取
String s = br.readLine();
System.out.println(s);
br.close();
}
OutputStreamWriter案例:
演示使用OutputStreamWriter转换流解决中文乱码问题
将字节流FileOutputStream转换成OutputStreamWriter字符流
public static void main(String[] args) throws IOException {
String filePath="d:\\abc.txt";
String str="helle,龚嘉乐,你一定会成功,加油,努力";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
OutputStreamWriter osw = new OutputStreamWriter(bos,"gbk");
osw.write(str);
System.out.println("输出成功");
osw.close();
}



浙公网安备 33010602011771号