黑马程序员技术交流社区

标题: 问题 [打印本页]

作者: 风云    时间: 2013-6-3 15:50
标题: 问题
/*
把多个流合并一个流
*/
import java.io.*;
import java.util.*;
class  
{
        public static void main(String[] args)
        {
                Vector<FileInputStream> v = new Vector<FileInputStream>();
         v.add(new FileInputStream(F:\\javatest\\1.txt));
                 v.add(new FileInputStream(F:\\javatest\\2.txt));
                 v.add(new FileInputStream(F:\\javatest\\3.txt));
        Enumeration<FileInputStream> en = new v.elements();
                SequenceInputStream sis = new SequenceInputStream(en);
        FileOutputStream fw = new FileOutputStream(F:\\javatest\\4.txt))
                byter[] arr = new byter[1024];
        int len=0;
                while((len=sis.read(arr))!=-1)//这句话该怎么理解,一直感觉有迷惑,
                {
                      fos.writer(buf,0,len);
                }
                fos.close();
        sis.close();
        }
}
作者: youngster    时间: 2013-6-3 16:39
其实我猜楼主主要是问其中的判定条件是在干嘛。

sis.read(arr),是往arr数组里读数据,返回的是int型的长度,用定义的int len接收了下,
len不等于-1就说明数据还没有读完,就是说后边还有数据,还要继续while,
当等于-1了就说明数据读光了,返回了-1,自然while就停了下来。
作者: First    时间: 2013-6-3 18:05
这句话应该是说 只有读到最后一个流的-1是才会当做大流的结束标记来对待,
当读到其他的-1时 不会结束,会继续读取大流中的数据




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2