JAVA中IO流对象之转换流

我们平常可能会遇到这样的问题,我们在以前用字节流字符流保存的时候字符编码都是默认按系统的编码保存的,我们的电脑

是GBK简体中文,但有时候我们需要别的字符编码,像UTF-8,这时候读取的文件就可能是乱码了。

这时候,IO的转换流就派上用场了。

两个新的IO流类,OutStreamWriter和InputStreamReader,看名字就知道了,一个是写入,一个是读取了。

下面来说写入,代码:

	public static void utfSet()throws IOException {
		FileOutputStream fos = new FileOutputStream("f:\\a\\aa.txt");
		OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
		osw.write("你好?");
		osw.close();
	}

关键的就是这两句:

	FileOutputStream fos = new FileOutputStream("f:\\a\\aa.txt");
	OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");

先建立FileOutStream对象,然后当做参数,在OutputStreamWriter的构造参数传进去,并设置需要的编码。默认是GBK。

在main()函数调用即可。

注意:在gbk中一个汉字是两个字节,但在utf-8中是3个字节,所以我们可以看文本大小就可以知道是什么编码,这里我们设置的是utf-8的,两个汉字,我们看文本大小是6个字节,所以很明显是utf-8的格式。

下面,我们说说流转换读取:

public static void utfGet()throws IOException{
		FileInputStream fis = new FileInputStream("f:\\a\\aa.txt");
		char[] c = new char[1024];
		int len = 0;
		InputStreamReader isr = new InputStreamReader(fis,"utf-8");
		len = isr.read(c);
		System.out.println(new String(c,0,len));
	}

实际跟字节字符的读取很像,只是多了个转换流,并指定编码格式。如果这里我们不知道utf-8格式,我们在main函数先运行utfSet()函数,在运行utfGet()函数,我们会发现乱码,如下:

浣犲ソ锛
差不多就是这些,如果有继续补充


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值