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 文件切割工具类的更多相关文章

  1. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  2. java文件读写工具类

    依赖jar:commons-io.jar 1.写文件 // by FileUtilsList<String> lines = FileUtils.readLines(file, " ...

  3. Java文件类型工具类

    package *; import java.util.HashMap; import java.util.Map; /** * <p> * <b>FileTypeEnum2& ...

  4. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  5. Java 压缩文件夹工具类(包含解压)

    依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons ...

  6. 文件类型工具类:FileTypeUtil

    个人学习,仅供参考! package com.example.administrator.filemanager.utils;import java.io.File;/** * 文件类型工具类 * * ...

  7. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  8. 文件夹工具类 - FolderUtils

    文件夹工具类,提供创建完整路径的方法. 源码如下:(点击下载 -FolderUtils.java .commons-io-2.4.jar ) import java.io.File; import o ...

  9. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

随机推荐

  1. python : No such file or directory

    windows上写的python脚本,在linux上执行时报: No such file or directory 解决方法一# sed -i 's#\r##' mysqlchk.py 解决方法二脚本 ...

  2. java课后思考问题(一)

    1.一个Java类文件中真的只能有一个共有类吗? 一个Java类文件中只能有一个公有类 2.请使用Eclipse或javac检测一下以下代码,有错吗? 在Java中,可以将一个类定义在另一个类里面或者 ...

  3. my.资料收集

    1.平民打书想上个高级反击,高级反击会掉哪个呢[梦幻西游手游吧]_百度贴吧.html http://tieba.baidu.com/p/5292257591?lp=5028&mo_device ...

  4. 操作集合的线程安全考虑——java

    运行场景:多个线程同时调用ArrayList存放元素 两个线程A和B,在A线程调用的时候,list中暂时还未有元素存在,此时,list的size值为0,同时A在添加元素的时候,add进了一个元素,此时 ...

  5. join合并字符串时使用生成器表达式

    data=['11','pp','aa'] ','.join(str(d) for d in data)

  6. javascrip基础学习

    JS是一种解释性脚本语言,在网页开发用经常用到(HTML CSS),用于控制网页的行为.现在RTT的柿饼UI也是用JS来开发的,所以很有必要学习一下. 注释:// ./*  */ 语句分行: 折行\ ...

  7. RTT之ENV

    一 先安装工具git:在CMD命令行中运行git命令检验git环境变量安装成功 二 下载env工具:然后解压,打开对应的exe然后右击-setting-intergration-registor这样后 ...

  8. Dropping tests

    题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  9. 对象池1(方法功能)PoolOption

    2.对象池PoolOption(方法功能) //单类型缓冲对象管理(单模池操作管理)功能: 激活.收回.预加载等. namespace kernal { [System.Serializable] p ...

  10. Murano为镜像包添加Root用户密码

    1. 安装dib-utils Dib Utils 是 diskimage-builder 工程的一部分,但是他们也用于 diskimage-builder 工程外部. 因为基于云的磁盘空间已经溢出,推 ...