将文件切割多份及合成【IO流技术】
1.文件切割
需求:文件切割,将一个较大文件切割成多个碎片文件,有两种方式。
第一种是指定好具体切割成多少文件。
第二种是指定好切割后碎片的大小。
思路:读取源文件,将源文件的数据分别复制到多个文件;
一个输入流对应多个输出流;
每个碎片都需要编号,顺序不能错;
将源文件以及切割的一些信息也保存起来随着碎片文件一起发送。
2.文件切割代码体现
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo {
private static final int BUFFER_SIZE = 10000;//切割碎片的大小 10000=10kb
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static void main(String[] args) throws IOException{
File srcFile = new File("D:\\7777777\\123\\123.png");//要切割的文件
File partsDir = new File("D:\\7777777\\123\\4546");//切割后储存的路径
splitFile(srcFile,partsDir);
}
public static void splitFile(File srcFile,File pastsDir) throws IOException{
if (!(srcFile.exists()&&srcFile.isFile())){
throw new RuntimeException("源文件不正确或者不存在");
}//健壮性的判断
if (!pastsDir.exists()){
pastsDir.mkdirs();
}
FileInputStream fis = new FileInputStream(srcFile);//使用字节流读取流和源文件关联。
FileOutputStream fos = null;//明确目的。目的输出流有多个,只创建引用。
byte[] buf = new byte[BUFFER_SIZE];//定义缓冲区大小