黑马程序员技术交流社区
标题:
将一个文件切割&将多个文件合并
[打印本页]
作者:
黄蒙
时间:
2015-8-21 11:08
标题:
将一个文件切割&将多个文件合并
本帖最后由 黄蒙 于 2015-8-21 11:10 编辑
import java.io.*;
import java.util.*;
/**
* 需求:按指定大小分割一个文件成三份,把三份文件组合成一份
*
* 思路:把文件按大小分割成三份,那么就需要用到多个输出流?
* 把文件从三份组合成一份就需要用到流的合并。流的合并需要用到SequenceInputStream
* 源 硬盘文件 目的 硬盘文件
* 输入流对象 FileInputStream----> 输出流对象 FileOutputStream
* |-> 输出流对象 FileOutputStream
* |-> 输出流对象 FileOutputStream
*
* 源 硬盘文件 目的 硬盘文件
* 输入流对象 FileInputStream-----> SequenceInputStream---> 输出流对象 FileOutputStream
* 输入流对象 FileInputStream-|
* 输入流对象 FileInputStream-|
* */
public class Div_Con_Files {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
conFiles();
}
public static void divFiles() throws IOException//将一个文件分割成多个文件
{
File file=new File("F:\\学习\\java\\test.png");//源文件
FileInputStream fis= new FileInputStream(file);
int len = 0;
int num = 1;
byte[] by = new byte[512*1024];//设定每一份分割文件大小
while((len=fis.read(by))!=-1)//当写满一个指定的分割文件大小后,新建一个新的输出流继续写下一部分
{
FileOutputStream fos = new FileOutputStream("F:\\学习\\java\\"+(num++)+".part");
fos.write(by,0,len);
fos.close();
}
fis.close();
}
public static void conFiles() throws IOException//将多个文件组合成一个文件
{
int part = 1;
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
while(part<=4)//将全部的文件都写入输入流并保存在ArrayList中
{
File file = new File("F:\\学习\\java\\"+(part++)+".part");
al.add(new FileInputStream(file));
}
//建立一个枚举对象(匿名内部类),该枚举对象的枚举内容即全部的源文件的输入流
//这个枚举对象用于传递给SequenceInputStream
Iterator<FileInputStream> it=al.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
//建立输出流
File file = new File("F:\\学习\\java\\success.png");
FileOutputStream fos=new FileOutputStream(file);
//建立SequenceInputStream将所有输入流会合输入
SequenceInputStream sis=new SequenceInputStream(en);
int len=0;
byte[] by=new byte[1024*1024];
while((len=sis.read(by))!=-1)
{
fos.write(by, 0, len);//输出流写入文件
}
fos.close();
sis.close();
}
}
复制代码
写了很久,累死了。。大家看看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2