关于FileInputStream中的read()
import java.io.*;
public class test {
public static void main(String[] args) {
int b=0;
FileInputStream f=null;
try{
f=new FileInputStream("D:/test.txt");
}catch(FileNotFoundException e){
System.out.println("file not found");
System.exit(-1);
}
try{
long num=0;
while((b=f.read())!=-1)
{
System.out.print((char)b);
num++;
}
System.out.println();
System.out.println("一共读取:"+num+"字节");
}catch(IOException e){
System.out.print("file read error!");
System.exit(-1);
}
}
}
该程序为读取txt文件中的内容然后输出
txt文件内容:
123456asdfadsf
asdfadsf
ergtsdfsdfg
sdfgs
fgsdfgs
泥
输入内容为:
123456asdfadsf
asdfadsf
ergtsdfsdfg
sdfgs
fgsdfgs
?à
一共读取:57字节
FileInputStream 中的read()方法 :从此输入流中读取一个数据字节。
而java中的字符用的是unicode编码的,每个字符都是用两个字节表示的
我的问题是: 用read()方法读取一个字节后 然后输出 为什么不会出错?
例如 我读取'a'这个字符的话 'a'=\u0097 读了前面一个字节 00 然后输出 00 相应的字符 ,然后读取 97 再输入97相应的字符'a' 这个是我的想法 可是出来的结果却不是这样的 而只有那个中文字 才会输出两个字符,望各位大神解答。 谢谢
------解决方案--------------------
我查了一下,ascii码中00表示null,什么都没有,输出的小方框,我感觉是eclipse工具显示的原因。小方框没有对应的ascii码。倒是在乱码的时候经常出现。