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 ...
随机推荐
- 第十一章:DOM扩展
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wait、notify和notifyAll
生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下: public void produce() { synchronized (this) { while (mBuf ...
- Linpack之HPCG测试
平台信息 Description: CentOS Linux release 7.6.1810 (Core) 注意事项 安装HPL之前需要配置好: CXX编译器(检查:c++ -v) MPICH 并行 ...
- GridLayout(网格布局)
常用属性: 排列对齐: ①设置组件的排列方式: android:orientation="" vertical(竖直,默认)或者horizontal(水平) ②设置组件的 ...
- Murano Weekly Meeting 2015.11.11
Meeting time: 2015.November.11th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting su ...
- dom4j使用
http://www.cnblogs.com/zfc2201/archive/2011/08/16/2141441.html http://www.blogjava.net/i369/articles ...
- Spark生态系统
在大数据非常流行的今天,每个行业都在谈论大数据,每个公司(互联网公司,传统企业,金融行业等)都在讨论大数据.高层管理者利用大数据来进行决策:数据科学家利用大数据来进行业务创新:程序员利用大数据来完成项 ...
- stm32 PWM输出学习
STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.通用定时器也能同时产生多达 4路 ...
- pat05-图1. List Components (25)
05-图1. List Components (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue For a ...
- 利用DOS命令做伪装成图片的压缩包,看上去是图片其实是个压缩包用2条命令即搞定
在很多地方我们看到一张图片,然后把这张图片下载到本地,改后缀名为xx.rar,即变成了压缩包. 比如下面这个图片:(把以下图片保存到本地,后缀名xx.png 改为 xx.rar,解压试试) 怎么样,是 ...