InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
OutputStreamWriter:Writer的子类,可以将OutputStream(字节流)包装成Writer(字符流)
当处理纯文本数据时,字符流效率更高,但往往会被编码问题困扰。故可以将字节流转换成字符流,在转换时制定编码,让字符流不被编码问题困扰
InputStreamReader
@Test
public void read() throws IOException {
String line = null;
//指定读取的编码格式 该格式与读取目标一致
String CharSet = "GBK";
String filePath = "E:\\t.txt";
//创建字节流
FileInputStream fileInputStream = new FileInputStream(filePath);
//创建转换处理流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,CharSet);
//创建包装处理流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
//关闭外层流
bufferedReader.close();
System.out.println("读取成功");
System.out.println("读取的编码格式为:" + CharSet);
}
OutputSreamWriter
@Test
public void write() throws IOException {
String data = "你好";//若使用英文 则会写入UTF-8
//指定写入的编码格式
String CharSet = "GBK";
String filePath = "E:\\t.txt";
//创建字节流
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
//创建转换处理流
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,CharSet);
//创建包装处理流
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(data);
//关闭外层流
bufferedWriter.close();
System.out.println("写入成功");
System.out.println("写入的编码格式为:" + CharSet);
}