关于Eumeration+SequenceInputSteam问题

package cn_xqx_01;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;


/***
 * 
 * @author xqx
 *
 * 文件隐藏功能
 * 拆文件
 * 1.读文件 fielinputstream
 * 2.存入缓冲区
 * 3.写文件 fileoutpurstream
 * 4.刷新缓冲区,等待下一个文件进入
 * 
 * 合文件
 * 1.读刚刚被拆开的文件fileinoutstream(for循环读取)存入Arraylist集合
 * 2.用迭代器Itertor取出文件
 * 3.用枚举来重写hasnext与next方法
 * 4.在用SequenceInputStream在读一遍枚举后的文件
 * 5.用fileoutputstream来合并文件
 * 
 * 
 */
public class SplitFile {
public static void main(String[] args) throws IOException{
//SplitFile_01();//切割文件
sequence();//合并文件
}
public static void SplitFile_01() throws IOException{
FileInputStream fileInputStream = new FileInputStream("F:\\01.bmp");



FileOutputStream fileOutputStream = null;
int len = 0;
int count = 1;
byte[] b = new byte[5*1024*1024];//切割文件大小为5*1MB 被平均分割
while((len=fileInputStream.read(b))!=-1)
{
fileOutputStream = new FileOutputStream("F:\\"+(count++)+".part");//用计数器区别part文件
fileOutputStream.write(b,0,len);
fileOutputStream.close();//一个切割好了,就刷新缓冲区,等待第二个进入

}
if(fileInputStream!=null)
{
fileInputStream.close();
}
}

public static void  sequence()throws IOException {
ArrayList<FileInputStream> arrayList = new ArrayList<FileInputStream>();
for(int x=1;x<=3;x++)
{
arrayList.add(new FileInputStream("F:\\"+x+".part"));
}
final Iterator<FileInputStream> iterator = arrayList.iterator();
//用枚举来重写迭代器
Enumeration<FileInputStream> enumeration = new Enumeration<FileInputStream>() {
public boolean hasMoreElements()
{
return iterator.hasNext();
}
public FileInputStream nextElement() {
return iterator.next();
}
};

SequenceInputStream sequenceInputStream = new SequenceInputStream(enumeration);

FileOutputStream fileOutputStream = new FileOutputStream("E:\\02.bmp");

int len = 0;
byte[] b = new byte[5*1024*1024];
while((len=sequenceInputStream.read(b))!=-1)
{
fileOutputStream.write(b,0,len);

}
if(sequenceInputStream!=null)
{
sequenceInputStream.close();
}
fileOutputStream.close();
}

}


小弟还搞不懂为什么在合并时 为什么要先Eumeration+SequenceInputSteam啊?不能直接FileOutputStram吗????

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值