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;
import java.util.List;
public class 切割合并文件 {
public static void main(String[] args) throws IOException {
int count = cutFile();
merge(count);
}
// 切割文件
public static int cutFile() throws IOException {
FileInputStream fis = new FileInputStream("E:\\abc.pdf");
FileOutputStream fos;
byte[] buf = new byte[1024 * 1024];
int len;
int count = 1;
while ((len = fis.read(buf)) != -1) {
fos = new FileOutputStream("E:\\splitFiles\\" + (count++) + ".part");
fos.write(buf, 0, len);
fos.close();
}
System.out.println(count);
fis.close();
return count;
}
// 合并文件
public static void merge(int count) throws IOException {
List<FileInputStream> list = new ArrayList<>();
for (int i = 1; i <= count; i++) {
list.add(new FileInputStream("E:\\splitFiles\\" + i + ".part"));
}
Iterator<FileInputStream> iterator = list.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>() {
@Override
public boolean hasMoreElements() {
return iterator.hasNext();
}
@Override
public FileInputStream nextElement() {
return iterator.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("E:\\splitFiles\\merge.pdf");
byte[] buf = new byte[1024 * 1024];
int len;
while ((len = sis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.close();
sis.close();
}
}
网友评论