转换流(避免乱码情况)

基本介绍:

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&jhan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值