Java文件操作问题:字节流和字符流有什么区别?
字节流是由字节组成的,字符流是由字符组成的.Java里字符由两个字节组成.
但是我在使用FileInputStream和FileWriter发现输出的结果是一样的.下面是两个代码文件:
file1:ByteStream.java
import java.io.*;
public class ByteStream{
public static void main(String args[]) throws
IOException {
File inputFile = new File( "E://A//partnovel.txt ");//定义文件,内容为: "She went. "
FileInputStream in = new FileInputStream(inputFile);
//从输入流读数据,暂存于c,再写入输出流并显示输出流内容
int c;
while((c = in.read())!= -1){
System.out.print(c+ "> > ");//每个字节之间加> > 符
}
in.close();
}
}
file2:CharStream.java
import java.io.*;
public class CharStream{
public static void main(String arges[])throws Exception{
File inputFile = new File( "E://A//partnovel.txt ");////定义文件,内容为: "She went. "
FileReader in = new FileReader(inputFile);
int c;
while((c = in.read()) != -1){
System.out.print(c+ "> > ");
}
in.close();
}
}
他们的结果都是:
115> > 104> > 101> > 32> > 119> > 101> > 110> > 116> > 46> >
这是为什么?请高手指点!
------解决方案--------------------filereader是双字节的字符输入流,fileinputdream是单字符的字符输入流
FileReader 会做编码转换,FileInputStream会忠实于原始文件数据。任何形式的Reader都会涉及编码,你的程序只是因为使用了系统缺省编码(虽然在你看来没设过编码,和FileInputStream没区别)。
显示是另一回事,是显示给你的系统做的转换,如果在其他系统里就会显示其他东西。