本次博客来学习IO流中的转换流——InputStreamReader 和 OutputStreamWriter。
InputStreamReader 和 OutputStreamWriter
- InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)。
- OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字符流)。
- 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文乱码的问题,所以建议将字节流转换成字符流。
- 可以在使用时指定编码格式(比如 utf-8,gbk,gb2312,ISO8859-1等)。
- 案例:将字节流FileInputStream 包装成 字符流InputStreamReader,对文件进行读取(按照 utf-8 格式),进而在包装成 BufferedReader。
public class InputStreamReader_ {
public static void main(String[] args) throws IOException {
String filePath = "d:\\111\\a.txt";
//1. 把FileInputStream 转成 InputStreamReader
//2. 指定编码 gbk
InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath),"utf-8");
//3. 把 InputStreamReader 传入 BufferedReader
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
System.out.println("读取的内容="+ s);
br.close();
}
}
- 案例:将字节流 FileOutputStream 包装成字符流OutputStreamWriter,对文件进行写入。
public class OutputStreamWriter_ {
public static void main(String[] args) throws IOException {
String filePath = "d:\\111\\kkk.txt";
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filePath), "utf8");
osw.write("hallo,计算机科学");
osw.close();
System.out.println("保存成功!");
}
}
;
System.out.println("保存成功!");
}
}