已知在java中,char类型为2字节,int类型为4字节,而汉字正好也是两个字节。请看下面的程序:importjava.io.*;publicclassTestFileInputStream{publicstaticvoidmain(String[]args){i...
已知在java中,char类型为2字节,int类型为4字节,而汉字正好也是两个字节。
请看下面的程序:
import java.io.*;
public class TestFileInputStream {
public static void main(String[] args) {
int b = 0;
FileInputStream in = null;
try {
in = new FileInputStream("d:\\share\\java\\io\\TestFileInputStream.java");
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
System.exit(-1);
}
try {
long num = 0;
while((b=in.read())!=-1){
System.out.print((char)b);
num++;
}
in.close();
System.out.println();
System.out.println("共读取了 "+num+" 个字节");
} catch (IOException e1) {
System.out.println("文件读取错误"); System.exit(-1);
}
}
}
既然InputStream读取是按字节读取的,而char是两个字节,为什么还能读取正确呢?同样,汉字也是两个字节,为什么汉字却读取不正确呢?
读取出来的文件内容中,凡是英文字母的均能正确显示,但是汉字却全显示“??”了。
展开