InputStreamReader、OutputStreamReader转换流的使用

InputStreamReader、OutputStreamReader转换流的使用

  1. 转换流:属于字符流
  • InputStreamReader :将一个字节的输入转化为字符的输入流
  • OutputStreamReader : 将一个字符的输入转化为字节的输入流
  1. 作用:提供字节流和字节流主之间的转换
  2. 编码:字节、字节数组转化为字符数组字符串
    解码:字符数组、字符串转化为字节、字节数组
public classInputStreamReaderTest{
	@Test
	public void test(){
		FileInputStream fis = new FileInputStream("hello.txt");
		//如果不指定自字符集使用默认的字符集
		//InputStreamReader isr = new InputStreamReader(fis);
		//具体使用哪个字符集,要看文件在保存的时候使用的是什么字符集
		InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
		
		char[] buf = new char[20];
		int len;
		while((len = isr.read(buf)) != -1){
			String str = new String(buf,0,len);
			//输出到控制台,也可以输入到别的文件中
			System.out.println(str);
		}
		isr.close();
	}
}

在这里插入图片描述

转化文件的字符集

@Test 
public void test() throws IOException{
	File file1 = new File("hello1");
	File file2 = new File("hello1");
	
	FileInputStream fis = new FileInputStream(file1);
	FileOutputStream fos = new FileOutputStream(file2);
	
	InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
	OutPutStreamWriter osw = new OutPutStreamWriter(osw,"gbk");
    
    char[] cbuf = new char[20];
    int lenth= 0;
    //读写过程
    while((lenth = isr.read(buf)) != -1){
		osw.write(cbuf,0,len);
	}
	//关闭资源
	isr.close();
	osw.close();
}
  • 为了便于阅读将异常抛出,实际开发使用try catch finally 确保资源得到关闭。
  1. 字符集
  • ASCII:美国标准信息交换码,用一个字节的7位可以表示
  • ISO8859-1:拉丁码表,欧洲码表,用一个字节的8位表示
  • GB2313:中国的中文编码表,最多两个字节编码所有字符
  • GBK:中国的中文编码表升级,融合了更多的中文文字符号,最多两个字节编码
  • Unicode:国际标准编码,融合了目前人类使用对的所有字符,为每个字符分配唯一的字符码,所有的文字都用两个字节表示
  • UTF-8:变长的编码方式,可用1-4个字节来表示一个字符在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值