IO流之转换流
InputStreamReader 继承于Reader,是字节流通向字符流的桥梁,可以把字节流按照指定编码 解码 成字符流。
OutputStreamWriter 继承于Writer,是字符流通向字节流的桥梁,可以把字符流按照指定的编码 编码 成字节流。
转换流的工作原理:
写入UTF-8文件:
1 public static void main(String[] args) throws IOException { 2 File file = new File("d:\\sxt2019\\b.txt"); 3 4 String string="i like you too"; 5 6 //1.创建通道 7 FileOutputStream fileOutputStream=new FileOutputStream(file); 8 9 //2.创建转换流 10 OutputStreamWriter writer=new OutputStreamWriter(fileOutputStream,"UTF-8"); 11 12 //3.写入数据 13 writer.write(string); 14 15 //4.刷新缓冲区 16 writer.flush(); 17 //5.关闭通道 18 writer.close(); 19 //6.关闭转换流 20 fileOutputStream.close(); 21 22 }
读取UTF-8到程序内存中:
public static void main(String[] args) throws IOException { File file = new File("d:\\sxt2019\\b.txt"); FileInputStream fileInputStream=new FileInputStream(file); InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream, "UTF-8"); char[] cbuf=new char[2]; int len; StringBuilder sb=new StringBuilder(); while((len=inputStreamReader.read(cbuf))!=-1){ sb.append(cbuf, 0, len); } System.out.println(sb.toString()); }