当前位置: 代码迷 >> J2SE >> IO源中最常见的while循环
  详细解决方案

IO源中最常见的while循环

热度:3688   发布时间:2013-02-25 00:00:00.0
IO流中最常见的while循环
Java code
package io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class TestIO{    public static void main(String args[]) throws IOException{        try{            FileInputStream fis=new FileInputStream("D://1.txt");            FileOutputStream fos=new FileOutputStream("D://2.txt");                    byte[] b=new byte[1024];            int read=fis.read(b);          //这时候不是已经将1.txt中的所有数据读出来了吗?            System.out.println("--------"+read);            while(read!=-1){              //为什么还要用while?  将while换成if发现结果是一样的!                fos.write(b,0,b.length);                  read=fis.read();      //如果1.txt数据已经全部读出,则此时read为-1,跳出while            }            fis.close();            fos.close();        }catch(IOException e){            e.printStackTrace();        }            }}


求解释,越详细越好,为什么都在用while?


------解决方案--------------------------------------------------------
这个
int read=fis.read(b); //这时候不是已经将1.txt中的所有数据读出来了吗?
这里只是读取了最多1024字节(如果没有读取到文件尾),read是实际读取的字节数
while(read!=-1){ //为什么还要用while? 将while换成if发现结果是一样的!
while是保证一定将文件读取完,换成if只有在文件小于1024字节时是一样的结果
read=fis.read(); //如果1.txt数据已经全部读出,则此时read为-1,跳出while
对的,如果上一次已经读取到文件尾,此次已经没有数据可读了,那么会返回-1的
  相关解决方案