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. 第十一章:DOM扩展

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. wait、notify和notifyAll

    生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下: public void produce() { synchronized (this) { while (mBuf ...

  3. Linpack之HPCG测试

    平台信息 Description: CentOS Linux release 7.6.1810 (Core) 注意事项 安装HPL之前需要配置好: CXX编译器(检查:c++ -v) MPICH 并行 ...

  4. GridLayout(网格布局)

    常用属性: 排列对齐: ①设置组件的排列方式:  android:orientation=""     vertical(竖直,默认)或者horizontal(水平) ②设置组件的 ...

  5. Murano Weekly Meeting 2015.11.11

    Meeting time: 2015.November.11th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting su ...

  6. dom4j使用

    http://www.cnblogs.com/zfc2201/archive/2011/08/16/2141441.html http://www.blogjava.net/i369/articles ...

  7. Spark生态系统

    在大数据非常流行的今天,每个行业都在谈论大数据,每个公司(互联网公司,传统企业,金融行业等)都在讨论大数据.高层管理者利用大数据来进行决策:数据科学家利用大数据来进行业务创新:程序员利用大数据来完成项 ...

  8. stm32 PWM输出学习

    STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.通用定时器也能同时产生多达 4路 ...

  9. pat05-图1. List Components (25)

    05-图1. List Components (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue For a ...

  10. 利用DOS命令做伪装成图片的压缩包,看上去是图片其实是个压缩包用2条命令即搞定

    在很多地方我们看到一张图片,然后把这张图片下载到本地,改后缀名为xx.rar,即变成了压缩包. 比如下面这个图片:(把以下图片保存到本地,后缀名xx.png 改为 xx.rar,解压试试) 怎么样,是 ...