由FileInputStream的read()、read(byte[])两个函数的使用,重新认识ascii编码、Unicode编码有什么用?
由FileInputStream的read()、read(byte[])两个函数的使用,重新认识ascii编码、Unicode编码有什么用?
1FileInputStream的read()、read(byte[])两个函数的使用
https://www.cnblogs.com/Hfly/p/4759132.html
1)read()函数
2)read(byte[])函数
my解析:123的根据ascii编码转换成的二进制是:001100010011001000110011
fis.read(b)的意思是:从此输入流中将最多2个字节(怎么理解“最多”?答案是:如果剩下的不够2个字节的话,有多少读多少 )的数据读入一个byte 数组b中,fis.read(b)其输出的结果是写入后的b的字节数。
for(int i=0;i<3;i++)这个循环:
i=0,即第一次循环,fis.read(b)后,byte数组b的内容是什么{00110001,00110010},所以Arrasys.toString()返回[49,50],fis.read(b)返回值是2,因为读取了两个字节。
i=1,即第二次循环,fis.read(b)后,byte数组b的内容是什么{00110011,00110010},因为只从流中读到了一个字节,所以只替换了byte数组的第一个元素,第二个元素不修改。fis.read(b)返回值是1,因为读取了1个字节。
i=2,即第三次循环,fis.read(b)后,byte数组b的内容是什么{00110011,00110010},因为从流中一个字节也不读到,所以byte数组的任何一个元素都不修改。fis.read(b)返回值是-1,因为没有读取任何一个字节。
理解了这个:
jf框架的附件下载代码的如下代码就很好理解了:
2ascii码、unicode编码有什么用?感觉没有什么用。