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、使用字节流或者字符流进行输出内容到另一文件都显示正常.不受汉字的影响