【Java-----IO流(四)之转换流详解】

转换流概述

当我们文件里面含有中文英文以及数字时,我们使用字节流将文件内容在内存中显示,英文和数字显示正常,而中文却显示乱码,这时候我们可以使用转换流将其转换为字符流显示在内存中。转换流是字符流和字节流之间的桥梁。InputStreamReader用于将字节输入流转换为字符输入流,OutputStreamWriter用于将字节输出流转换为字符输出流。使用转换流可以在一定程度上避免乱码,还可以指定输入输出所使用的字符集。

InputStreamReader

InputStreamReader实现将字节的输入流按指定字符集转换为字符的输入流,将InputStream转换为Reader

构造方法

InputStreamReader(InputStream in):创建一个使用默认字符集的InputStreamReader

FileInputStream fis=new FileInputStream("D:\\aaa\\helloworld.txt");
InputStreamReader isr=new InputStreamReader(fis);

InputStreamReader(InputStream in,String charsetName):创建一个使用指定字符集的InputStreamReader

FileInputStream fis=new FileInputStream("D:\\aaa\\helloworld.txt");
InputStreamReader isr=new InputStreamReader(fis,"gbk");

InputStreamReader具体使用案例代码如下:

//文件中原有内容:abcde我爱中国123
FileInputStream fis1=new FileInputStream("D:\\aaa\\helloworld.txt");
InputStreamReader isr=new InputStreamReader(fis1,"utf-8");
int ch;
while((ch=isr.read())!=-1) {
	System.out.print((char)ch);
}
isr.close();
//输出:abcde我爱中国123

OutputStreamWriter

OutputStreamWriter实现将字符的输出流按指定字符集转换为字节的输出流,将Writer转换为OutputStream

构造方法

OutputStreamWriter(OutputStream out):创建使用默认字符编码的OutputStreamWriter

FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos2);

OutputStreamWriter(OutputStream out,String charsetName):创建使用指定字符编码的OutputStreamWriter

FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos2,"utf-8");

OutputStreamWriter具体使用案例代码如下:

FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos2,"utf-8");
osw.write("我是中国人");
osw.write(65);
osw.write(66);
char[] c=new char[] {'1','2','3'};
osw.write(c);
osw.close();
//文件中写入:我是中国人AB123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值