FileInputStream in =new FileInputStream(fileName); int b=in.read(); int i=1; while((b=in.read())!=-1){ System.out.print(Integer.toHexString(b)+" "); if(i++%10==0){ System.out.println(); } }
每次in.read()都会自动往后挪一个字节?
这个if条件里面,无论是否满足都会执行i++吗?
while后面的(b=in.read())!=-1返回的是一个布尔值,而这个值只有在文件读到结尾的时候才返回false,即in.read==-1,所以在读完之前返回的都是true,都可以执行循环
b的值本身不会变化,但是文件的指针pointer在每次循环后都会加1,所以每次b读出来的值都是不一样的
if的判断条件是i++%10==0,先判断i%10的值是否为0,然后自增1,此时i=i+1,然后进入下一个循环,判断i+1的值除以10余数是否为0,所以就算if的条件不满足,i也执行了自增
结束循坏的条件是in.read()==-1,因为读到-1就表示结束了
in.read() 会后移的, 条件不满足是不是i++的