java对文件分片处理
前言
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并。
1、文件切割
//预分配文件占用磁盘空间“r”表示只读的方式“rw”支持文件随机读取和写入
RandomAccessFile raf = new RandomAccessFile(new File(file), "r");
//文件长度
long length = raf.length();
//计算切片后,每一文件的大小
long maxSize = length / count;
//定义初始文件偏移量(读取文件进度)
long offset = 0L;
//开始切割
for(int i = 0; i < count-1; i++){ //count-1 其中的一份文件不处理
//初始化
long fbegin = offset;
//分割第几份文件
long fend = (i+1) * maxSize;
//写入二进制临时文件中
offset = getWrite(file, i, fbegin, fend);
}
//将剩余的写入到最后一份文件中
if((int)(length - offset) > 0){
getWrite(file, count-1, offset, length);
}
2、合并文件
// 声明随机可读可写的文件
raf = new RandomAccessFile(new File(file), "rw");
// 开始合并文件,对应切片的二进制文件
for(int i = 0; i < temCount; i++){
RandomAccessFile reader = new RandomAccessFile(
new File(tempFile+"_"+i+".tmp"), "r");
byte[] b = new byte[1024];
int n = 0;
while((n = reader.read(b)) != -1){
raf.write(b, 0, n);
}
}
注意:需要本文源代码可关注微信号艳辉网 回复关键字‘java138’获取。