已采纳回答 / 涅米
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也执行了自增
2017-03-06
最新回答 / im李先森la
可以,本来老师的意思是 从0位开始写入到 b位,如果你写了buf.length,就相当于每次都读全部byte[]的位数,这个时候b就没意义了,可以在while后面直接写while(in.read() != -1)
2017-03-06
已采纳回答 / SHsama
两个汉字,四个字节。按你所说,你觉得应该使用四次写操作,但是那是相对于直接写入字符来说的,此处使用了字节数组,数组相当于一个有序的容器,在数组中”中国“被分成四个字节依次写入其中,out.write(bytes);就将这个数组写入其中,数组其中的写字节操作在内部进行,不是靠四个write操作写入的。你可以将鼠标放到你写的write上可看到该方法提示Writes b.length bytes from the specified byte array to this file
output stream....
2017-03-05
已采纳回答 / 向上看
因为你每run一次,指针都是从0开始的,每run一次都改写了上一次内容,你可以尝试运行一下老师的程序,然后再在程序前添加 raf.seek(12),使下一次从12byte处开始写,运行后你会发现输出长度为24
2017-03-03