Java 文件切割工具类
Story: 发送MongoDB 管理软件到公司邮箱,工作使用。
1、由于公司邮箱限制附件大小,大文件无法发送,故做此程序用于切割大文件成多个小文件,然后逐个发送。
2、收到小文件之后,再重新组合成原来的大文件。
依赖jar
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
FileSplitUtils.java
package javax.utils; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils; /**
* 文件切割工具类
*
* @author Logan
* @createDate 2019-04-25
* @version 1.0.0
*
*/
public class FileSplitUtils { /**
* 默认切割大小
*/
public static final int DEFAULT_SIZE = 1024 * 1024 * 4; /**
* 切割指定源文件,并输出到指定目录,按默认大小切割
*
* @param srcFile 指定要切割的源文件
* @param outputDir 指定输出目录
* @throws IOException 有异常时抛出,由调用者处理
*/
public static void split(File srcFile, String outputDir) throws IOException {
split(srcFile, outputDir, DEFAULT_SIZE);
} /**
* 切割指定源文件,并输出到指定目录
*
* @param srcFile 指定要切割的源文件
* @param outputDir 指定输出目录
* @param size 切割大小
* @throws IOException 有异常时抛出,由调用者处理
*/
public static void split(File srcFile, String outputDir, int size) throws IOException {
try (
FileInputStream inputStream = FileUtils.openInputStream(srcFile);
) { File temp = null;
byte[] buffer = new byte[size];
int len = 0; // IOUtils.read(inputStream, buffer) 读取完后,再读取则返回值为0
for (int i = 10000; (len = IOUtils.read(inputStream, buffer)) > 0; i++) {
temp = FileUtils.getFile(outputDir, String.valueOf(i));
FileUtils.writeByteArrayToFile(temp, buffer, 0, len);
} }
} /**
* 聚形碎片
*
* @param inputDir 碎片输入目录
* @param destFile 聚形目标文件
* @throws IOException 有异常时抛出,由调用者处理
*/
public static void combinateFormChips(String inputDir, File destFile) throws IOException {
File inputPath = FileUtils.getFile(inputDir);
String[] files = inputPath.list(); try (
FileOutputStream outputStream = FileUtils.openOutputStream(destFile);
) { // 按文件名排序
Arrays.sort(files);
for (String fileName : files) {
File file = FileUtils.getFile(inputPath, fileName);
byte[] data = FileUtils.readFileToByteArray(file); IOUtils.write(data, outputStream);
}
}
} }
测试类
package com.java; import java.io.File; import javax.utils.FileSplitUtils; import org.apache.commons.io.FileUtils; /**
* 文件切割程序
*
* @author Logan
* @createDate 2019-04-25
* @version 1.0.0
*
*/
public class FileSplit { public static void main(String[] args) {
try {
File srcFile = FileUtils.getFile("G:\\MongoDB.zip");
String chipsDir = "G:\\MongoDB";
FileSplitUtils.split(srcFile, chipsDir); File destFile = FileUtils.getFile("G:\\MongoDB2.zip");
FileSplitUtils.combinateFormChips(chipsDir, destFile);
} catch (Exception e) {
e.printStackTrace();
}
} }
.
Java 文件切割工具类的更多相关文章
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- java文件读写工具类
依赖jar:commons-io.jar 1.写文件 // by FileUtilsList<String> lines = FileUtils.readLines(file, " ...
- Java文件类型工具类
package *; import java.util.HashMap; import java.util.Map; /** * <p> * <b>FileTypeEnum2& ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- Java 压缩文件夹工具类(包含解压)
依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons ...
- 文件类型工具类:FileTypeUtil
个人学习,仅供参考! package com.example.administrator.filemanager.utils;import java.io.File;/** * 文件类型工具类 * * ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- 文件夹工具类 - FolderUtils
文件夹工具类,提供创建完整路径的方法. 源码如下:(点击下载 -FolderUtils.java .commons-io-2.4.jar ) import java.io.File; import o ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
随机推荐
- 安装rails遇到的问题
1 要安装js运行环境,例如Nodejs,如果使用nvm记得,安装完执行nvm use '版本号' 2 或者在Gemfile文件中加入: gem 'execjs'gem 'therubyracer'然 ...
- [转]ASP.NET Core集成微信登录
本文转自:http://www.cnblogs.com/early-moon/p/5819760.html 工具: Visual Studio 2015 update 3 Asp.Net Core 1 ...
- Git提交代码到主分区
git 提交代码,本地新建一个my分支,不从本地master分支直接上传,而是先从本地my分支上提交至本地master分支,然后本地master提交至远程master分支 上.前提是远程只有一个mas ...
- C#序列化结构体
在将对象或结构体序列化成二进制数据流时,我们通常都会使用 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类来实现, 但是 ...
- springboot从入门到精通(一)
springboot到底有什么好处?有什么优势?这个先不用看,我们只要知道它有很多优势,现在要做的事只有一件,那就是撸代码!撸完就知道有多少料! 首先,在案例中,我们会构建一个英雄列表应用.操作如下: ...
- IDEA配置 tomcat server
- JavaScript 对象继承 OOP (三)
对象继承 A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. JavaScript 语言的继承不通过 class (es6 中的class 不过是 ...
- 解决dubbo的服务发布注解@service不能和事务注解不能共用的方案
最近在项目的开发中遇到了一个问题,就是服务提供方使用@service发布dubbo服务时候,服务消费方@Reference无法注入bean导致空指针异常的问题.分析原因为@service注解并没有将服 ...
- pure-ftp 修改用户信息
1.修改用户test的密码 [root@localhost bin]# ./pure-pw passwd test #修改密码 Password: Enter it again: [root@loca ...
- sql分组数据去重
#分组获得每个机柜里服务器占用的机架总数,如552807e6-b428-4184-b219-ae368c68ddb3占用4个 mysql> select cabinet_uuid, count( ...