今天写了一个含配置文件的 文件分割 及 合并 的java程序。
SplitFileDemo(分割)类
package Split;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;public class SplitFileDemo {private static final int PART_SIZE = 1048576;/*** 将文件切成1m大小文件碎片。* * */public static void main(String[] args) throws IOException {File file = new File("F:\\等一分钟.avi");File dir = new File("F:\\splitPart1");splitFile(file,dir);}public static void splitFile(File file, File dir) throws IOException {FileInputStream fis = new FileInputStream(file);if(!dir.exists())dir.mkdirs();FileOutputStream fos = null;byte []buf = new byte[PART_SIZE];int len = 0;int count = 1;while((len = fis.read(buf)) != -1){fos = new FileOutputStream(new File(dir,(count++)+".myPart"));fos.write(buf, 0, len); fos.close();}FileWriter fw = new FileWriter(new File(dir,"fileInfo.properties"));Properties pro = new Properties();pro.setProperty("partCount", count+"");pro.setProperty("fileName", file.getName());pro.store(fw, "fileInfo");fw.close();fis.close();}}
=====================================================================================================================================
mergeFileDemo(合并类)
package merge;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties;public class mergeFileDemo {/*** 文件合并程序。* @param args* @throws IOException */public static void main(String[] args) throws IOException {File dir = new File("F:\\splitPart1");mergeFile(dir);}public static void mergeFile(File dir) throws IOException {File[] properties_file = dir.listFiles(new Suffix("properties")); if(properties_file.length != 1)throw new RuntimeException("配置文件不存在 或 不唯一");Properties pro = new Properties();pro.load(new FileReader(properties_file[0]));int count = Integer.parseInt(pro.getProperty("partCount"));String file_name = pro.getProperty("fileName");File[] myPart = dir.listFiles(new Suffix(".myPart"));if(myPart.length != count-1)throw new RuntimeException("碎片文件数目不正确! 应为 "+(count-1)+" 个");ArrayList<InputStream> al = new ArrayList<InputStream>();FileInputStream fis = null;for(int i = 1; i<count ;i++){fis = new FileInputStream(new File(dir,i+".myPart"));al.add(fis);}//创建枚举变量 来存取集合中的读入流。Enumeration<InputStream> en = Collections.enumeration(al);//将枚举变量中的读取流,进行逻辑串联。SequenceInputStream sis = new SequenceInputStream(en);FileOutputStream fos = new FileOutputStream(new File(dir,file_name));byte []buf = new byte[1024];int len = 0;while((len = sis.read(buf))!= -1){fos.write(buf, 0, len);fos.flush();}fos.close();sis.close();}}
===========================================================================================================================================================================
过滤器类
package merge;import java.io.File;
import java.io.FilenameFilter;public class Suffix implements FilenameFilter { private String suffix;public Suffix(String suffix) {super();this.suffix = suffix;}public boolean accept(File dir, String name) {return name.endsWith(suffix);}}
今天写了一个含配置文件的 文件分割 及 合并 的java程序。相关推荐
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助...
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require( ...
- git 下如何把另外一个分支的某个文件改动merge 合并到这个分支,而不是把整个分支merge过来
git 下如何把另外一个分支的某个文件改动merge 合并到这个分支,而不是把整个分支merge过来 假设在分支A上改动了一个文件 f ,想把 f 合并到 B上,而不是把整个 A merge 到 B ...
- submlime text写java_在Sublime Text 3中配置编译和运行Java程序
1.设置java的PATH环境变量 2.创建批处理或Shell脚本文件 要想编译运行Java程序,需要创建一个批处理或者Shell脚本 Windows: runJava.bat: @echo off ...
- 使用python实现大文件分割与合并
在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情 ...
- c语言文件分割与合并程序详解,如何实现将一个文件分割成多个小文件
你也许会遇到到这样一个问题?当你有一个较大的软件,而无法用一张软盘将其全部拷下时,你也许会想到该将它分解开,分盘拷回去后,再将它们合并起来.现在的这种分割工具很多,你想自己动手做一个适合自己的分割工具 ...
- c#文件分割与合并 part 1 (转自互联网)
这是一篇简单介绍了使用c#来进行文件的合并和分割,我在我的项目中,需要使用到这个模块的功能,所以自己实践之后,发于此,以作备份: 首先,我们先来做文件分割的部分,我们新建了个winform项目,项目设 ...
- 超级文件分割《合并》机(分割大文件)
需求:现在文件的大小越来越大,很多移动设备无法一次把文件一次全部拷贝完全,这种情况就需要把文件分割小点,分几次传送,然后,合并起来,这样就实现了大文件的拷贝功能 介绍:我的这个用的是吧文件分割成1M大 ...
- Linux:split 文件分割和合并
一.简介 Linux服务器普通的文件上传下载一般用 sz rz 就可以满足要求了,但是遇到大文件(超过4G)时就不好使了. 这是就可以通过将大文件分割为小文件传输,之后再进行文件合并即可. 二.用法 ...
- RandomAccessFile实现文件分割、合并
RandomAccessFile可使用的操作模式: "rwd"模式可用于减少执行的"I/O"操作数量.使用"rwd"仅要求更新要写入存储的文 ...
最新文章
- 注册表收藏夹任你玩(4招)
- 3559A sdk卡
- 使用Excel 通过 ODBC 连接到 MySQL 数据库
- java删除页面数据不刷新_Ajax请求数据与删除数据后刷新页面
- android8 通知呼吸灯_android学习笔记----解决兼容8.0以上和8.0之前版本通知栏显示、振动、LED呼吸灯闪烁问题(真机验证)...
- CF183C:Diverse Permutation(构造)
- git 常用命令(含删除文件)
- 1014. 福尔摩斯的约会 (20)-PAT乙级真题
- 贝叶斯分类与贝叶斯网络
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(八) MiniGUI 和其他嵌入式 Linux 上的图形及图形用户界面系统...
- 企业如何从0到1搭建BI系统
- 神经网络的过拟合是什么,神经网络过拟合的表现
- 支付宝和微信支付用户付款码条码规则
- 怎么注册一个电子邮件账号?电子邮件地址怎么写?
- Nvidia GPU 最新计算能力表(CUDA Compute Capability)
- upyun java_又拍云Java SDK使用
- limt mysql操作
- H5实现调用本地摄像头实现实时视频以及拍照功能
- Clipboard -- 剪贴板操作
- 实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试