合并文件
/**
* 合并文件:合并由拆分文件拆分的文件
* 要求将拆分文件放到一个文件夹中
* 主要利用随机文件读取和文件输入输出流
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Arrays;
import java.util.Date;
import java.util.StringTokenizer;
public class Combination {
String srcDirectory = null;// 拆分文件存放的目录
String[] separatedFiles;// 存放所有拆分文件名
String[][] separatedFilesAndSize;// 存放所有拆分文件名及分件大小
int FileNum = 0;// 确定文件个数
String fileRealName = "";// 据拆分文件名确定现在原文件名
public Combination() {
srcDirectory = "f:\\test\\";
}
/**
*
* @param sFileName
* 任一一个拆分文件名
* @return 原文件名
*/
private String getRealName(String sFileName) {
StringTokenizer st = new StringTokenizer(sFileName, ".");
return st.nextToken() + "." + st.nextToken();
}
/**
* 取得指定拆分文件模块的文件大小
*
* @param FileName
* 拆分的文件名
* @return
*/
private long getFileSize(String FileName) {
FileName = srcDirectory + FileName;
return (new File(FileName).length());
}
/**
* 生成一些属性,做初使化
*
* @param drictory
* 拆分文件目录
*/
private void getFileAttribute(String drictory) {
File file = new File(drictory);
separatedFiles = new String[file.list().length];// 依文件数目动态生成一维数组,只有文件名
separatedFiles = file.list();
// 依文件数目动态生成二维数组,包括文件名和文件大小
// 第一维装文件名,第二维为该文件的字节大小
separatedFilesAndSize = new String[separatedFiles.length][2];
SepComparator sepComparator = new SepComparator();
Arrays.sort(separatedFiles,sepComparator);//排序
// Arrays.sort(separatedFiles);// 排序
FileNum = separatedFiles.length;// 当前文件夹下面有多少个文件
for (int i = 0; i < FileNum; i++) {
separatedFilesAndSize[i][0] = separatedFiles[i];// 文件名
separatedFilesAndSize[i][1] = String
.valueOf(getFileSize(separatedFiles[i]));// 文件大x
}
fileRealName = getRealName(separatedFiles[FileNum - 1]);// 取得文件分隔前的原文件名
}
/**
* 合并文件:利用随机文件读写
*
* @return true为成功合并文件
*/
private boolean CombFile() {
RandomAccessFile raf = null;
long alreadyWrite = 0;
FileInputStream fis = null;
int len = 0;
byte[] bt = new byte[10*1024*1024];
try {
//文件的输出地址......
raf = new RandomAccessFile(srcDirectory + fileRealName, "rw");
for (int i = 0; i < FileNum; i++) {
raf.seek(alreadyWrite);
fis = new FileInputStream(srcDirectory
+ separatedFilesAndSize[i][0]);
//
long size=Long.parseLong(separatedFilesAndSize[i][1]);
MappedByteBuffer buf = fis.getChannel().map(FileChannel.MapMode.READ_ONLY, 0,size);
raf.getChannel().write(buf);
// while ((len = fis.read(bt)) > 0) {
// raf.write(bt, 0, len);
// }
fis.close();
alreadyWrite = alreadyWrite
+ Long.parseLong(separatedFilesAndSize[i][1]);
}
raf.close();
} catch (Exception e) {
e.printStackTrace();
try {
if (raf != null)
raf.close();
if (fis != null)
fis.close();
} catch (IOException f) {
f.printStackTrace();
}
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println("开始时间:"+new Date());
Combination combination = new Combination();
combination.getFileAttribute(combination.srcDirectory);
combination.CombFile();
System.out.println("结束时间:"+new Date());
System.exit(0);
}
}
分享到:
相关推荐
分割文件和合并文件 分割文件和合并文件 分割文件和合并文件
合并后生成的文件名为《合并文件.pdf》 pdf格式文件合并 将文件放置到目录pdf中,以pdf为后缀名 合并后生成的文件名为《合并文件.pdf》 pdf格式文件合并 将文件放置到目录pdf中,以pdf为后缀名 合并后生成的文件名为...
CSV文件批量合并工具(批量合并多个CSV文件)是一款简洁好用,绿色小巧的CSV文件合并工具。CSV文件批量合并工具非常的使用,让你能够更轻松快捷的进行CSV文件合并工作,非常方便。可以同时批量合并多个CSV文本文件,...
单纯用vb实现的wav文件合并,两个文件要有相同的码率,采样位数,声道等等,总之就是两个正常大小的文件合并是可以的,只要两个文件的总大小小于2GB,那就可以了.这个纯vb6实现,像一般的几十兆的wav文件合并,还是很快的,...
文件合并器文件合并器文件合并器文件合并器文件合并器文件合并器
对文件进行切割,合并
2、可以合并多个TIF文件到【单个文件】; 3、待合并的每个TIF文件:可以是已经包含单个TIF 或 多个TIF; 4、待合并的TIF文件【必须以数字为文件名】,合并时,按数字文件名【升序合并】而不会随机合并; 5、做成DLL...
文件分割器(自带bat文件合并文件).rar
本程序用于 合并已经下载好的很多ts片段文件为一个完整的ts文件。 使用方法:将 ts所有分段文件、m3u8文件和本程序放于同一目录下,m3u8文件名必须是local.m3u8,然后运行程序即可得到完整的ts文件index.ts 注意事项...
Bin文件合并工具,可支持批量合并
2 如果是制作chm文件,准备好html文件即可。如果是合并chm文件,先Ctrl-D用easychm将要合并的各个chm文件反编译为html文件 3 编译chm: 新建项目,指定所有要制作、合并的html文件的父目录,编译即可得到chm文件 说明...
exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器
1.将【ts合并_步骤1】放到与*.m3u8同文件夹下,程序会自动找到m3u8文件,并读取内容,按照顺序将*.ts文件合并。 2.点击【开始合并】后...大大缩短了合并文件的复杂程度。 3.下载小视频可用 UC qq 夸克等手机浏览器。
将多个CSV文件合并成一个文件 CSV全称Comma-Separated Values,它是一种通用的,简单的,被广泛采用的一种表格数据格式。采用纯文本格式存储,用分隔符号分开。它格式类似于数据库表格,每一行,中间用分隔符分开,...
这是用WPS Excel的JS宏写的文件合并工具,可以通过对话框选择文件,把选中的Excel表格进行合并。里面包含xlsm启用宏的工作簿(js源码)和4个示例的Excel表格文件,下载不需要积分。
压缩文件里是bin格式文件的合并源码,用c语言实现将两个bin文件合并成一个bin文件,用于mcu开发中bootloader和app的合并
2、若是0.ts、1.ts、2.ts类型视频合并到此:https://download.csdn.net/download/gongjin28_csdn/85240822 3、工具需要电脑浏览器打开,输入最后一个数字(如 Y2hlbmppbmdjb25n427则是输入Y2hlbmppbmdjb25n后面的427...
CSV文件合并,可以节省时间,快速合并CSV文件,简化操作
分割合并文件 VC源码 分割合并文件 VC源码 分割合并文件 VC源码 分割合并文件 VC源码
Qt小应用,实现bin文件合并,hex文件合并,在线升级用的加密加开头识别字符的bin文件,通过bat文件传入开头识别字符,bin文件合并app偏移参数。MDK中调用这个bat文件,可以实现编译后三个文件自动生成的功能。