FileInputStream的read()方法;
API上说:从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞,返回下一个数据字节;如果已到达文件末尾,则返回 -1;
比如说:
FileReader in=new FileReader("1.txt");
b=in.read();
in.close();
System.out.print((char)b);
假如1.txt文件中有一个英文字符或者一个汉字,都是占两个字节,而read();一次只能读一个字节,为什么能正确显示字符?
API上说:从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞,返回下一个数据字节;如果已到达文件末尾,则返回 -1;
比如说:
FileReader in=new FileReader("1.txt");
b=in.read();
in.close();
System.out.print((char)b);
假如1.txt文件中有一个英文字符或者一个汉字,都是占两个字节,而read();一次只能读一个字节,为什么能正确显示字符?
API上说:从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞,返回下一个数据字节;如果已到达文件末尾,则返回 -1;
比如说:
FileReader in=new FileReader("1.txt");自己注意下你用的是什么类,Reader是按字符来读的
FileInputStream 才是按照字节流读的
reader是字符流,一次读一个字符。读一个英文、一个汉字、一个日文,一个法文等。
reader是sun为了国际化发明的东西。假设一种语言很变态,一个字符占10个字节,那么read()就会读10个字节。
FileInputStream是字节流 所以 read方法读一个字节
FileReader是字符流 每次读的是一个字符 所以可以正常显示
如果你想用字节流读的话 可以进行一部转化 就是字节流到字符流的转化
InputStreamReader 类名 = new InputStreamReader(FileInputStream 对象)
Sream分字符和字节流。当然还有其他分类方法如:节点流和包装流,输入流和输出流