import java.io.*;
public class Dome09
{
public static void main(String[] args)
throws IOException
{
FileInputStream f = new FileInputStream("Dome09.java");
byte[] b = new byte[256];
int i=1,j=0;
while ((j=f.read(b)) > 0)
{
System.out.println("测试发现循环第"+i+"次!");
i++;
System.out.println(new String(b,0,j));
}
}
}
经过对程序二稍微调整修改,发现程序二执行了两次,即while()只循环两次,所以读了两次,在此可以看出程序一的问题是数组范围不够大,导致第二次读入覆盖掉第一次的。。。所以结果不一样
执行效果图
当然不一样,f.read(b)每读取一个字节,游标自动下移一位, 第一个程序if语句中用了一次,输出语句中又用了一次,相当于读取一个字节游标移动了两次,表现在结果上就是隔一个字节读取一隔字节。
System.out.println(new String(b,0,f.read(b)));
System.out.println(new String(b,0,i);
public String(byte[] bytes,
int offset,
int length)
第一个打印的时候,又读了一次。游标向下移动一次
而第二个没有往下读。
第一个代码数组会越界。。第二个正常的