import java.io.BufferedInputStream;
import java.io.FileInputStream;
public class Hello{
public static void main(String[] args) throws Exception {
FileInputStream file = new FileInputStream("d:\\in.txt"); //文件内容为国abcd
BufferedInputStream buf = new BufferedInputStream(file);
System.out.println((char) buf.read()); //输出为å
/*
int data = 0;
while ((data = buf.read()) != -1) {
System.out.print((char) data); //输出为å ½abcd
}
*/
}
}
如上代码,BufferedInputStream的缓冲区默认大小为8KB,为什么读取一次不能完全打印呢,就算选择注释里的循环打印,第一个字符“国”打印出来也乱码?
国
字在java里面占用了3个字节char
BufferedInputStream的缓冲区不是8K吗,我读一次不就够了吗
@振袖秋风问红叶: 但是这里你调用的是 read()方法,这个方法只返回一个字节。可能你把缓冲区弄混 了,这个8K的缓冲区,是指你在使用 BufferedInputStream.read()
读取文件的时候,它会从文件里面加载最多8K的数据到它自身的缓冲字节数组里,然后再从这8k缓存里返回你要的单个字节
@去哪里吃鱼: 哦哦懂了,原来还是只返回一个字节,谢谢大佬解答