A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风云 中级黑马   /  2013-6-3 15:50  /  1141 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
把多个流合并一个流
*/
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();
        }
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

2 个回复

倒序浏览
其实我猜楼主主要是问其中的判定条件是在干嘛。

sis.read(arr),是往arr数组里读数据,返回的是int型的长度,用定义的int len接收了下,
len不等于-1就说明数据还没有读完,就是说后边还有数据,还要继续while,
当等于-1了就说明数据读光了,返回了-1,自然while就停了下来。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
这句话应该是说 只有读到最后一个流的-1是才会当做大流的结束标记来对待,
当读到其他的-1时 不会结束,会继续读取大流中的数据
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马