基本介绍:
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();
2万+

被折叠的 条评论
为什么被折叠?



