java 快速合并文件_java 实现切割文件和合并文件的功能
java 实现切割文件和合并文件的功能
一、切割文件代码如下:
需求:将一个媒体文件切割成多个碎片(每个碎片的大小为1M),并添加配置说明文件
1.创建(指定)一个文件夹,用于保存切割出来的碎片
2.创建源文件对象,并传入一个输入流对象
3.创建一个缓冲区为1M
4.创建一个输入流对象并将源文件对象传入,创建一个输出流对象引用
5.每个缓冲区获取到碎片时,使用输出对应流对象写入到一个新的文件
6.写相应的信息到配置文件
实现代码:
public class SplitFileTest {
public static void main(String[] args) throws IOException {
/**
* 需求:将一个媒体文件切割成多个碎片(每个碎片的大小为1M),并添加配置说明文件
* 1.创建(指定)一个文件夹,用于保存切割出来的碎片
* 2.创建源文件对象,并传入一个输入流对象
* 3.创建一个缓冲区为1M
* 4.创建一个输入流对象并将源文件对象传入,创建一个输出流对象引用
* 5.每个缓冲区获取到碎片时,使用输出对应流对象写入到一个新的文件
* 6.写相应的信息到配置文件
*/
File partDir = new File("F:\\partsDir");
File src = new File("F:\\周杰伦 - 简单爱.mp3");
splitFile(src,partDir);
}
private static void splitFile(File src, File partDir) throws IOException {
if(!partDir.exists()){
partDir.mkdirs();
}
byte[] buf = new byte[1024*1024];
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = null;
int len = 0;
int count = 1;
while ((len=fis.read(buf)) != -1){
fos = new FileOutputStream(new File(partDir,"简单爱-part"+(count++)));
fos.write(buf,0,len);
fos.close();
}
String filename = src.getName();
int partCount = count;
fos = new FileOutputStream(new File(partDir,count+".properties"));
//创建一个属性集。
Properties prop = new Properties();
//将配置信息存储到属性集中
prop.setProperty("filename",src.getName());
prop.setProperty("partCount",Integer.toString(partCount));
//将属性集中的信息持久化
prop.store(fos,"part file info");
fos.close();
fis.close();
}
}
二、合并文件代码如下:
需求:使用SequenceInputStream类来合并碎片文件
1.创建一个list集合,来保存指定文件夹碎片流集合
2.用集合工具类方法Collections.enumeration()方法将list集合转换为Enumeration
3.新建一个SequenceInputStream流对象,并传入第2步的Enumeration
4.创建一个输出流对象,创建缓冲区循环写第3步SequenceInputStream读取的内容
public class MergeFileTest {
public static void main(String[] args) throws IOException {
/**
* 需求:使用SequenceInputStream类来合并碎片文件
* 1.创建一个list集合,来保存指定文件夹碎片流集合
* 2.用集合工具类方法Collections.enumeration()方法将list集合转换为Enumeration
* 3.新建一个SequenceInputStream流对象,并传入第2步的Enumeration
* 4.创建一个输出流对象,创建缓冲区循环写第3步SequenceInputStream读取的内容
*/
File partDir = new File("F:\\partsDir");
List list = new ArrayList();
for (int i=1;i<12;i++){
FileInputStream fis = new FileInputStream(new File(partDir,"简单爱-part"+i));
list.add(fis);
}
Enumeration en = Collections.enumeration(list);
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream(new File(partDir,"000.mp3"));
byte[] buf = new byte[1024];
int len = 0;
while ((len=sis.read(buf)) != -1){
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
以上就是关于java 文件切割和合并的实例详解,大家如果有疑问可以留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
java 快速合并文件_java 实现切割文件和合并文件的功能相关推荐
- java工具类之大文件分片(切割)与合并
之前在潭州教育教学网站上看了一个视频关于java大文件的分片与合并 自己在练习的时候遇到一些坑,调试了好长时间 代码如下: 首先配置一个专门放参数的类 SplitFileParam public cl ...
- java 双声道音频_java实现切割wav音频文件的方法详解【附外部jar包下载】
本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronso ...
- java读取系统中指定的文件_java读取jar中指定的文件
Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...
- java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例
java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...
- java编译找不到文件_java报错找不到文件解决方法
刚开始编写java代码时,肯定会遇到各种各样的bug,当然对于初学者这也是能理解的,首先来说一个比较常见的错误,如下: 一般编写新的程序时,都是从Hello,World开始的,比如在DOS上运行jav ...
- java io流读取txt文件_Java使用IO流读取TXT文件
通过BufferedReader读取TXT文件 window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputS ...
- java ftp上传文件_jaVA使用FTP上传下载文件的问题
为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...
- .gitignore文件_Java小白入门,Git忽略文件.gitignore详解
在工程中,并不是所有文件都需要保存到版本库中的,例如"target"目录及目录下的文件就可以忽略.在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件 ...
- java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...
最新文章
- python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...
- 高性能负载均衡设计入门篇
- dede调用当前顶级栏目名称、ID、url方法
- nginx 上传 文件超时设置_nginx限制上传大小和超时时间设置说明/php限制上传大小...
- C#: Writing a CookieContainer to Disk and Loading Back In For Use
- VS2005不能新建Win32 智能设备项目的解决办法(转)
- [转]常见的软件版本编号及命名
- C# 引用访问权限,很多老手都不懂
- 40个幼儿园小故事,每天讲一个给小朋友~(赶紧收藏)
- php html转ubb,PHP HTML转UBB函数
- linux tar.7z如何解压,(转)Linux下解压:tar、rar、7z命令
- 该如何选择适合的服务器
- R语言散点图+趋势线+标注
- (六)springMvc 和 mybatis 整合
- 国密算法 SM4 对称加密 分组密码 python实现完整代码
- 全栈AI火力全开,“云智一体”为开发者凿开产业智能通衢
- Python爬虫系列(2)
- 视频流媒体服务器如何用OBS推流录屏或直播?
- bugly android studio,android studio 中怎么添加 bugly
- DUCATI XDIAVEL:杜卡迪最值得买的车:魔鬼诱惑 —— XDiavel S 评测
热门文章
- java mediacoder_MediaCoder转移动设备MP4(高清)
- QSettings配置读写-win注册表操作-ini文件读写
- FPGA实现IRIG-B(DC)码编码和解码的设计
- 鸿蒙版瑞幸咖啡开发日记(一)首页布局设计
- 啃完这些 Spring 知识点,我竟吊打了阿里面试官(附面经 + 笔记)
- (Docker)Centos docker配置neo4j和mysql
- 大型机学习之初步了解-什么是大型机
- 现在你们叫我大佬,其实我在大学就是渣渣
- 如何将DWG(CAD格式文件)转换到shp或其它gis文件
- Fastboot线刷“复活”之刷机心得(二)——线刷刷机