您的位置:首页 > 编程语言 > Java开发

java 合并文件-分割文件

2016-05-11 12:14 411 查看
/*
合并文件。
SequenceInputStream表示其他输入流的逻辑串联。
它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,
接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

构造方法:
SequenceInputStream(Enumeration<? extends InputStream> e)
通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。
SequenceInputStream(InputStream s1, InputStream s2)
通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2),以提供从此 SequenceInputStream 读取的字节。

*/

import java.io.*;
import java.util.*;
class SequenceInputStreamDemo
{
public static void main(String[] args) throws IOException
{
Vector<FileInputStream> v=new Vector<FileInputStream>();

v.add(new FileInputStream("D:\\myfile\\mycode\\1.txt"));
v.add(new FileInputStream("D:\\myfile\\mycode\\2.txt"));
v.add(new FileInputStream("D:\\myfile\\mycode\\3.txt"));

Enumeration<FileInputStream> en=v.elements();

SequenceInputStream sis=new SequenceInputStream(en);

FileOutputStream fos=new FileOutputStream("D:\\myfile\\mycode\\sum.txt");

byte[] b=new byte[1024];

int len;
while((len=sis.read(b))!=-1)
{
fos.write(b,0,len);
}

sis.close();
fos.close();
}
}

/*
分割文件

*/
import java.io.*;
import java.util.*;
class SplitFile
{
public static void main(String[] args) throws IOException
{
splitPic();//切割图片
mergePic();//合并图片--使用Vector
//mergePic_1();//合并图片--使用ArrayList
}

public static void splitPic()throws IOException  //切割图片
{
FileInputStream fis=new FileInputStream("D:\\图片\\test.jpg");

FileOutputStream fos=null;

int len=0;
int count=0;
byte[] b=new byte[1024*1024];

while((len=fis.read(b))!=-1)
{
fos=new FileOutputStream("D:\\图片\\test\\"+(count++)+".part");
fos.write(b,0,len);
fos.close();
}
fis.close();
}

public static void mergePic()throws IOException //合并图片
{
Vector<FileInputStream> v=new Vector<FileInputStream>();
v.add(new FileInputStream("D:\\图片\\test\\0.part"));
v.add(new FileInputStream("D:\\图片\\test\\1.part"));

Enumeration<FileInputStream> en=v.elements();

SequenceInputStream sis=new SequenceInputStream(en);

FileOutputStream fos=new FileOutputStream("D:\\图片\\test\\new.jpg");

int len=0;
byte[] b=new byte[1024];
while((len=sis.read(b))!=-1)
{
fos.write(b,0,len);
}

fos.close();
sis.close();
}

public static void mergePic_1()throws IOException //合并图片
{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
al.add(new FileInputStream("D:\\图片\\test\\0.part"));
al.add(new FileInputStream("D:\\图片\\test\\1.part"));

final Iterator<FileInputStream> it=al.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("D:\\图片\\test\\new.jpg");

int len=0;
byte[] b=new byte[1024];
while((len=sis.read(b))!=-1)
{
fos.write(b,0,len);
}

fos.close();
sis.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息