1、Java中字节流和字符流-含汉字内容输入输出的不同情况

/*2017年10月31日09:58:02练习*/

import java.io.*;

class TestFileInputStream_2
{
public static void main(String[]args)throws Exception
{
FileInputStream fi=new FileInputStream("D:\\ java - 程序练习\\89_20171031 【流】- 字节流 输入输出 - 练习\\TestFileInputStream.java");//【7行】
int ch=fi.read();
while (-1!=ch)
{
System.out.printf("%c",ch);
ch=fi.read();
}

}

输出到屏幕,汉字部分会乱码:

如第7行:"D:\\1??±ó  java - ???ò?·?°\\89_20171031 ???÷??- ×????÷.....

是因为汉字占2字节,如果用字节流读取后输出到屏幕,则会出现乱码.而用字节流进行复制文本到文件的话:

/*2017年10月31日11:48:08*/
import java.io.*;
class TestFileInputStream_3
{
public static void main (String[]args)throws Exception
{
FileInputStream fi=new FileInputStream("D:\\  java - 程序练习\\89_20171031 【流】- 字节流 输入输出 - 练习\\TestFileInputStream_3.java");//【8行】
FileOutputStream fo=new FileOutputStream("zhangsan.zs");
int ch=fi.read();
while(-1!=ch)
{
fo.write(ch);
ch=fi.read();
}
}
}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

8行虽然使用了字节流读取目标含有汉字的代码,但是复制到目标文件zhangsan.zs再打开时发现汉字并无乱码,所以字节流的读取汉字并不影响复制到目标文件.

而使用字符流输出到屏幕汉字就显示正常 如下:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

/*2017年10月31日12:02:57*/
import java.io.*;
class TestFileInputStream_4
{
public static void main (String[]args)throws Exception
{
FileReader fr=new FileReader("D:\\  java - 程序练习\\89_20171031 【流】- 字节流 输入输出 - 练习\\TestFileInputStream_4.java");
int ch=fr.read();
while (-1!=ch)
{
System.out.printf("%c",ch);
ch=fr.read();
}
}
}

///

可见字符流和字节流在对汉字的输出:

1、输出到屏幕时,使用字节流会出乱码,需要使用字符流。

2、使用字节流或者字符流进行输出内容到另一文件都显示正常.不受汉字的影响


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值