请教高手 Java字节流 读取存数据于缓存时的问题

Python011

请教高手 Java字节流 读取存数据于缓存时的问题,第1张

byte最后一次读取的长度比之前的要小。所以你byte数组尾巴那几位不是空的,是前一次读取的尾部。

设置长度是42或者更大时,你的byte数组一次性就把内容全部读取完了。while只执行一次,而设置为小于42的时候,就会多次执行while,把新读取的字节存放到byte数组中去。但是你最后一次的长度不是正好你设置的12而是6,所以新读取的6长度字节不能完全替换byte数组中前一次的数据。只能替换掉6个。因为数组长度是12,所以后6位还保存着前一次(倒数第二次读取)的数据。

可以这样修改,希望你能看懂。

int len = 0 // 字节长度

while((len = fis.read(b))>0){ // 将读取到的长度记录下来

  fos.write(b,0,len) // 读取了多长的字节就写入多长的字节

}

内存中的表现不管他,知道一次读多少就好啦!

字符:二个字节

字节:一个字节

例:你现在要读一个汉字(以二个字节来存,既:一个字符)的“汉”。

1.用字符流读:一次读二个字节,那么你就可以完全读取到它,并存到你想存的地方。

2.用字节流读:一次读一个字节,那么你要读二次你才完全得读取到了这个汉字。不然就读取到了半个(一个汉字二个字节中的一个字节),那你说这半个(一个字节)是什么东西?我想这并不是你想要的吧。

还有一点挺有用的,就是在字符流中你可以一次读取一行(readline()),这我想对于我们来说是一个不错的方法吧。