话不多说,直接上代码

import java.io.*;

/***
* 分割大文件
* (
* SQL 文件太大(insert),第三方工具无法一次性读取,进行分割
* 生成 一个一个文件
* )
*/
public class SplitFileUtil { // 使用示例
public static void main(String[] args) { // 目标文件
String targetFile = "F:\\logs\\insert11.sql";
// 存放的目录
String saveDir = "F:\\logs\\Insert";
// 自定义的生成文件前缀名
String saveFileName = "insert";
// 生成文件格式的后缀
String suffix = "sql";
// 自定义 一个文件的行数,这里是 100000 行 一个文件
long splitSize = 100000;
try {
splitFile(targetFile, saveDir, saveFileName, suffix, splitSize);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* @param targetFile 目标文件路径
* @param saveDir 存放的目录
* @param saveFileName 生成文件的前缀名
* @param suffix 生成文件的后缀名
* @param splitSize 每一个文件 多少行数据
*/
public static void splitFile(String targetFile, String saveDir , String saveFileName, String suffix,long splitSize) throws Exception { if( !saveDir.endsWith("\\") ){
saveDir += File.separator;
} File file = new File(targetFile);
if (!file.exists()) {
throw new Exception("目标路径:[ " + targetFile + " ] 有错误...");
}
// 输入缓冲流
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); String str = null;
// 行数
long len = 0; System.out.println("开始写入......请等待......");
long startTime = System.currentTimeMillis();
// 输出缓冲流
BufferedWriter writer = null;
while ((str = reader.readLine()) != null) { // 当前 行 文件
long txtSize = (len / splitSize) + 1;
String fileName = saveDir + saveFileName + txtSize + "." + suffix;
// 使用 BufferedWriter 如果 不进行 flush 或者 close 写入不了内容。
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName, true)));
writer.write(str + System.lineSeparator() );
writer.flush();
len ++;
}
writer.close();
reader.close(); System.out.println( "写入完毕,一共 " + len + " 记录,耗时:" + ( System.currentTimeMillis() - startTime ) / 1000 + " s" );
}
}

Java 实现大文件切割并生成多个文件的更多相关文章

  1. linux下如何按行将文件切割成多个小文件

    答: split -l <行数> <目标文件> <切割后的文件前缀> 举例如下: split -l 1000 jello.txt jello 将jello.txt文 ...

  2. 工程没有生成lib文件,只生成了dll文件

    解决办法: 在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便填写个名字 -> 添加 重新编译编译就可生成.li ...

  3. 关于新版vue-cli安装json-server在build文件里没生成出dev-server文件

    今天在安装json-server时遇到一个问题,build文件里并没有生成dev-server.js文件, 开始是怀疑配置有问题,或者安装不正确,然后重新安装了两三次,还是这样,郁闷.. 通过查询资料 ...

  4. 批量定时任务将rtf文件转为docx,入参是rtf文件夹,生成一个docx文件夹

    java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解 ...

  5. 每次更新obj和bin文件夹都生成nGB的文件

    今天受不了,把它们符号链接到机械硬盘上了 用mklink /d 创建的,也不知道和/j有什么区别

  6. 用java实现大文件分割、排序、合并

    import java.io.BufferedReader;   import java.io.BufferedWriter;   import java.io.FileNotFoundExcepti ...

  7. 大文件切割(split)

    split提供两种方式对文件进行切割: 根据行数切割,通过-l参数指定需要切割的行数 根据大小切割,通过-b参数指定需要切割的大小 1.1 根据行数切割 如下以一个3.4G大小的日志文件做切割演示,每 ...

  8. 实战|Linux大文件切割

    一个执着于技术的公众号 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件 ...

  9. Ffmpeg 实现文件切割

    文件切割是一项很常见的基本功能,通过Ffmpeg可以很容易实现这项功能. 首先介绍下基本原理,文件切割说白了就过滤掉文件的部分音视频包,按照什么规则过滤呢? 答案是时间戳.文件中每个视频及音频包都有时 ...

随机推荐

  1. 周一不睡觉,也要把pandas groupy 肝完,你该这么学,No.8

    如果图片无法观看,请移步 https://blog.csdn.net/hihell 学编程就跟打游戏一样一样的 为啥一样啊,因为要肝的 你看,学编程有很多好处 掉头发,有借口吧 不洗头,有借口吧 不洗 ...

  2. vue操作数组时遇到的坑

    用vue操作数组时,一般就那几个方法,而且是可以渲染的,但是有时候列表是渲染不了的先说下操作数组的几个方法吧 1 push ( ) 这个方法是在数组的最后面添加元素 用法:  括号里写需要加入的元素  ...

  3. Springboot 使用Jwt token失效时接口无响应(乌龙)

    问题背景:新项目使用Springboot框架,鉴权使用了Jwt 处理cors: @Configuration public class WebMvcConfig implements WebMvcCo ...

  4. 洛谷P2604 最大流+最小费用最大流

    题目链接:https://www.luogu.org/problem/P2604 题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在 ...

  5. Spring mybatis源码篇章-动态SQL节点源码深入

    通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-动态SQL基础语法以及原理 前话 前文描述到通过mybatis默认的解析驱动类org.apache.ibat ...

  6. jdk1.8 -- optional 的使用

    一.optional的介绍 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null.Optional提供很多有用的方法,这样我们就不用显式进行空值检测. Optional 类的引入很好 ...

  7. [转帖]IBM 开源 POWER 指令集架构

    IBM 开源 POWER 指令集架构 https://www.solidot.org/story?sid=61791 新闻越短 事情越严重 IBM 破釜沉舟 OpenPOWER 联盟国产化披荆斩棘? ...

  8. SQL SERVER ISDATE函数

    定义: ISDATE函数判断指定字符串是否是有效日期. 语法: ISDATE(date) 参数: ①date是需要判定是否是有效日期的字符串 返回值: int型数据 例:  声明:本文是本人查阅网上及 ...

  9. 关于greenlet的一些问题

    今天测试关于协程方面的代码发现我安装了greenlet模块缺导入不进.如图: 后来找了半天才发现原来greenlet被整进了gevent包中,如下导入就可以成功: 但这个greenlet没有了swit ...

  10. 【Trie】The XOR-longest Path

    [题目链接]: https://loj.ac/problem/10056 [题意] 请输出树上两个点的异或路径  的最大值. [题解] 这个题目,y总说过怎么做之后,简直就是醍醐灌顶了. 我们知道Xo ...