基本介绍:
1.InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成(转换)Reader(字符流)
2.OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字符流)
3.当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流
4.可以在使用时指定编码格式(utf-8, gbk, gb2312, iso8859-1等)
InputStreamReader
说明:字节流FileInputStream包装成(转换成)字符流InputStreamReader;对文件进行读取(按照utf-8/gbk格式),进而在包装成BufferedReader
//演示使用 InputStreamReader转换流解决中文问题 //将字节流转换成字符流 ,并指定编码 //1.需要操作的文件地址 String fileName = "d:\\work\\new03.txt"; //2.创建对象,作用:将 FileInputStream(fileName)转成InputStreamReader;并指定编码 InputStreamReader isr= new InputStreamReader(new FileInputStream(fileName),"gbk"); //3.包装流:将InputStreamReader 传入BufferedReader BufferedReader br = new BufferedReader(isr); //4.读取数据 String str = br.readLine(); System.out.println("读取数据:" + str); //5.关闭流 br.close();
OutputStreamWriter
说明:字节流FileOutputStream 包装成(转换成)字符流 OutoutStreamWriter,对文件进行写入
(按照gbk格式,可以指定其他,例如 utf-8)
//演示OutputStreamWriter使用 //FileOutputStream字节流转换成字符流OutputStreamWriter //指定处理的编码格式 //1.设置路径 String fileName = "d:\\work\\craft.txt"; //2.创建对象:将FileOutputStream转换成OutputStreamWriter OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName),"utf8"); //3.写入数据 osw.write("你好世界 hello-world!!"); //4.关闭流 osw.close();
PrintStream:字节打印流
打印流只有输出流,没有输入流
//1.字节打印流 PrintStream out =System.out; //print的底层也使用了write //2.1在默认的情况下,PrintStream 输出数据的位置是,标准输出,即显示器 out.println("hello - world"); //2.2因为print底层使用的是write,所以我们可以直接调用write进行打印/输出 out.write("黄河入海流".getBytes()); //3.修改打印输出流的位置 System.setOut(new PrintStream("d:\\work\\out.txt")); System.out.println("欲穷千里目,更上一层楼");//输出到 out.txt文件中 //4.关闭流 out.close();
PrintWriter:字符打印流
//PrintWriter printWriter = new PrintWriter(System.out); PrintWriter printWriter = new PrintWriter(new FileWriter("d:\\work\\out02.txt")); printWriter.print("hello - world!!"); //关闭流,必须关闭流才能写入数据 printWriter.close();