2022.5.5 I/O转换流
转换流(内存的字符与硬盘字节之间的转换)
桥转换流
-
InputStreamReader :是字节流转字符流(读:硬盘->内存)
-
OutputStreamWriter:是字符流转字节流(写:内存->硬盘)
可将字节流转换为字符流
可设置字符的编码方式
InputStreamReader
读取文件,指定使用编码
package com.xing.转换流;
import java.io.*;
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建字节流
FileInputStream fis = new FileInputStream("d:\\write.txt");
// 参数为字节流,编码方式
InputStreamReader isr = new InputStreamReader(fis, "utf-8");
// 2 读取文件
int data = 0;
while((data = isr.read()) != -1){
System.out.print((char)data);
}
// 3 关闭
isr.close();
}
}

OutputStreamWriter
-
OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。
-
它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
-
每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。
-
在写入底层输出流之前,得到的这些字节将在缓冲区中累积。
-
为了获得最高效率,可考虑将OutputStreamWriter包装到BufferedWriter中,以避免频繁调用转换器。
-
例如:Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
package com.xing.转换流;
import java.io.*;
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建字节输出流
FileOutputStream fos = new FileOutputStream("d:\\info.txt");
// 参数为字节流,编码方式
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
// 2 写入
for(int i = 0; i < 10; i ++){
osw.write("写入内容\n");
osw.flush();
}
// 3 关闭
osw.close();
}
}


浙公网安备 33010602011771号