黑马程序员技术交流社区
标题:
IO流之文件分割与合并
[打印本页]
作者:
奔跑的二叉树
时间:
2013-9-19 13:48
标题:
IO流之文件分割与合并
本帖最后由 奔跑的二叉树 于 2013-9-20 20:55 编辑
package cn.baidu.com;
import java.io.*;
import java.util.*;
//
public class SplitFile {
public static void main(String[] args) throws IOException {
splitFile();
merge();
}
public static void merge() throws IOException
{
ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>();
for(int x=1;x<=3;x++)
{
a1.add(new FileInputStream("F:\\Demo"+x+".part"));
}
final Iterator<FileInputStream> it=a1.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("F:\\NEW-DHTML.chm");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf, 0, len);
}
fos.close();
sis.close();
}
public static void splitFile() throws IOException
{
FileInputStream fis=new FileInputStream("F:\\DHTML.chm");
FileOutputStream fos=null;
byte[] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream("F:\\Demo"+(count++)+".part");
fos.write(buf, 0, len);
fos.close();
}
fis.close();
}
}
复制代码
把分割的文件合并成chm文件时,合并后的文件比之前的文件小了,而且打不开
作者:
lizhangzhi
时间:
2013-9-19 14:31
一个part文件中存的1M数据,如果dhtml.chm文件超过3M,而arraylist集合中做多只能存三个io流,不能保证全部的part文件都写入新文件,会出现新文件比源文件小的情况;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2