本帖最后由 严学韦 于 2012-11-23 21:52 编辑
谁能帮我更透彻地分析一下这两段代码的区别
public static void readFile_1()throws IOException{
FileInputStream fis = new FileInputStream("fos.txt");
byte[] buf = new byte[fis.available()];(用available()定义一个刚刚好的缓冲区,不用再循环了)
fis.read(buf);//这里的read()是怎么读的呢?
System.out.println(new String(buf));
fis.close();
}
public static void readFile_2()throws IOException{
FileInputStream fis = new FileInputStream("fos.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1){
System.out.println(new String(buf,0,len));
}
fis.close();
}
难道定义一个刚刚好的缓冲区就不用再循环了吗?是不是字节流的raad()方法是连续读的,所以就不用再用while循环了??
|