文件切割器和文件合并器
一、文件切割器
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class SplitFileDemo{
private static final int SIZE = 1024*1024;
public static void main(String[] args) throws IOException{
File file = new File("0.mp3" );
splitFile(file);
}
public static void splitFile(File file) throws IOException {
//用读取流关联源文件
FileInputStream fis = new FileInputStream(file);
//定义一个1M的缓冲区
byte[] buf = new byte[SIZE];
//创建目的
FileOutputStream fos = null;
int len = 0;
int count = 1;
//切割文件时,必须记录住被切割文件的名称,以及切割出来碎片文件的个数,以方
便于合并。
//这个信息为了进行描述,使用键值对的方式,用到了properties对象。
Properties prop = new Properties();
File dir = new File("c:\\partFiles" );
if(!dir.exists())
dir.mkdirs();
while((len = fis.read(buf)) != -1){
fos = new FileOutputStream(new File(dir,(count++) +
".part"));
fos.write(buf,0,len);
fos.close();
}
//将被切割文件的信息保存到prop集合中
prop.setProperty( "partcount",count + "" );
prop.setProperty( "filename",file.getName());
fos = new FileOutputStream(new File(dir,count + ".properties" ));
//将prop集合中的数据存储到文件中
prop.store(fos, "save file info");
fis.close();
fos.close();
}
}
二 、文件合并器
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
public class MergeFile{
public static void main(String[] args) throws IOException {
File dir = new File("c:\\partFiles" );
mergeFile(dir);
}
public static void mergeFile(File dir) throws IOException {
//获取指定目录下的配置文件对象
File[] files = dir.listFiles( new SuffixFilter(".properties" ));
if(files.length!=1)
throw new RuntimeException(dir + ",该目录下没有properties扩
展名的文件或者不唯一" );
//记录配置文件对象
File confile = files[0];
//获取该文件中的信息
Properties prop = new Properties();
FileInputStream fis = new FileInputStream(confile);
prop.load(fis);
String filename = prop.getProperty( "filename");
int count = Integer.parseInt(prop.getProperty("partcount"));
//获取该目录下的所有碎片文件
File[] partFiles = dir.listFiles( new SuffixFilter(".part" ));
if(partFiles.length != (count - 1)){
throw new RuntimeException("碎片文件不符合要求,个数不对!应该
是" + count + "个");
}
//将碎片文件和流对象关联并存储到集合中
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int x = 1; x <= partFiles.length; x++){
al.add( new FileInputStream(partFiles[x-1]));
}
final Iterator<FileInputStream> it = al.iterator();
//将多个流合并成一个序列流
Enumeration<FileInputStream> en = Collections.enumeration(al);
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream(new
File(dir,filename));
byte[] buf = new byte[1024*1024];
int len = 0;
while((len = sis.read(buf)) != -1){
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
class SuffixFilter implements FilenameFilter{
private String suffix;
public SuffixFilter(String suffix){
super();
this.suffix = suffix;
}
public boolean accept(File dir,String name){
return name.endsWith(suffix);
}
}
文件切割器和文件合并器相关推荐
- Java实现的文件切割器和文件合并器代码
一.实现文件切割功能 01. import java.io.File; 02. import java.io.FileInputStream; 03. import java.io.FileOutpu ...
- Java基础--文件切割器
好吧,既然算法这个高深的问题还不能游刃有余,那就先巩固巩固基础吧! 我就根据自己的学习经历,来复习一下以前学过的知识吧! 首先声明,这些概念非本人创造,是本人学习过程中接触到的.然后我根据自己的理解空 ...
- 文件切割器 合并器
/*目的:设计一个可以切割文件并将文件再次合成的程序 * 切割思路: * 1想要切割文件首先确定源文件,然后建立一个切割方法, * 2将一个源文件切成几个文件,要借助输入输出流,, * 3用配 ...
- PDF文件拆分合并器PDF Merge PDF Splitter + Mac
PDF Merge & PDF Splitter + Mac是专为Mac用户所提供的PDF文件拆分合并器,PDF Merge & PDF Splitter + Mac版能够为您将快速多 ...
- 如何批量合并Excel文件和工作表 - Excel合并器使用教程
Excel是人们用于创建日常工作表和统计信息的最流行的工具,在我们工作中经常接触到Excel的XLSX和XLS格式文件.不少朋友应该有时会发现,管理太多的Excel工作表和文件是一件头疼的事情,经常需 ...
- 办公自动化:PDF文件合并器,用Python将多个PDF文件进行合并
相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! Python源码.问题解答学习交流群:7731621 ...
- Java实现文件分割和文件合并实例
文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...
- java实现文件合并_Java实现文件分割和文件合并实例
文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...
- ASP.NET Core 静态文件及JS包管理器(npm, Bower)的使用
在 ASP.NET Core 中添加静态文件 虽然ASP.NET主要大都做着后端的事情,但前端的一些静态文件也是很重要的.在ASP.NET Core中要启用静态文件,需要Microsoft.AspNe ...
最新文章
- creo减速器建模实例_Proe/Creo建模实例教程----乌比莫斯之环教程(表达式扫描特征)...
- TJU 2248. Channel Design 最小树形图
- wcf简单的创建和运用
- gulp-babel 阻止了js文件编译的进程?
- yml php,使用 docker-compose.yml 快速搭建php开发环境
- Data URL和图片,及Data URI的利弊
- 20181225 基于TCP/IP和基于UDP/IP的套接字编程
- uni.startPullDownRefresh 只能执行一次的解决方案
- 全文搜索引擎 Elasticsearch 入门(ik,kibana,x-pack)
- Eclipse 使用 SVN 插件后修改用户方法汇总
- web前端入门:CSS 样式书写规范
- Linux下5种动态库运行时搜索路径的方法
- atitit 编程语言概念与原理
- combox取值以及赋值的方法
- 软件测试工程师--面试题
- E1--千兆以太网接口测试应用2022-09-07
- 利用python进行微信好友数据分析
- 全民学霸服务器在维护中需要多久,《全民学霸》学生系统详解,成就学霸之路...
- Android自定义Drawable第十四式之百步穿杨
- 加密一条保序的数据流