Java 实现大文件切割并生成多个文件
话不多说,直接上代码
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 实现大文件切割并生成多个文件的更多相关文章
- linux下如何按行将文件切割成多个小文件
答: split -l <行数> <目标文件> <切割后的文件前缀> 举例如下: split -l 1000 jello.txt jello 将jello.txt文 ...
- 工程没有生成lib文件,只生成了dll文件
解决办法: 在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便填写个名字 -> 添加 重新编译编译就可生成.li ...
- 关于新版vue-cli安装json-server在build文件里没生成出dev-server文件
今天在安装json-server时遇到一个问题,build文件里并没有生成dev-server.js文件, 开始是怀疑配置有问题,或者安装不正确,然后重新安装了两三次,还是这样,郁闷.. 通过查询资料 ...
- 批量定时任务将rtf文件转为docx,入参是rtf文件夹,生成一个docx文件夹
java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解 ...
- 每次更新obj和bin文件夹都生成nGB的文件
今天受不了,把它们符号链接到机械硬盘上了 用mklink /d 创建的,也不知道和/j有什么区别
- 用java实现大文件分割、排序、合并
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundExcepti ...
- 大文件切割(split)
split提供两种方式对文件进行切割: 根据行数切割,通过-l参数指定需要切割的行数 根据大小切割,通过-b参数指定需要切割的大小 1.1 根据行数切割 如下以一个3.4G大小的日志文件做切割演示,每 ...
- 实战|Linux大文件切割
一个执着于技术的公众号 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件 ...
- Ffmpeg 实现文件切割
文件切割是一项很常见的基本功能,通过Ffmpeg可以很容易实现这项功能. 首先介绍下基本原理,文件切割说白了就过滤掉文件的部分音视频包,按照什么规则过滤呢? 答案是时间戳.文件中每个视频及音频包都有时 ...
随机推荐
- python解析jSON文件
一.jSON文件 http://baike.baidu.com/link?url=wYeeLnhpXX-Tt8AoBRSNPh2P7Z2YHyK2tdD1tbBOQMfJIpA-YNHMOg2ZN6a ...
- 【gcd】辗转相除法
#include<stdio.h> int gcd(int a, int b) { int c; while(b) { c = a % b; a = b; b = c; } return ...
- 日常工作问题解决:centos/linux系统如何检测端口是否打开
1.telnet命令 格式: telnet ip 端口号 [root@centos7-127 ~]# telnet 192.168.87.128 22 Trying 192.168.87.128... ...
- JS对字符串的操作,截取
substring() //一个参数的时候是从那个参数到字符串结束的位置: substring(start,stop) //substring是对字符串两个索引之间的值进行截取: 要注 ...
- 线段树维护动态连续子段HDU1540
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1540 #define IOS ios_base::sync_with_stdio(0); cin.tie( ...
- python 基础例子 双色球 查询天气 查询电话
# 随机生成双色球import random# 随机数 1-16之间# r = random.randint(1,16)# print(r)phone_numbers_str = "匪警[1 ...
- Linux/CentOS 配置Mysql-server过程和遇到错误解决方法
第一步:下载mysql-server 方法1.wget url(你所要下载的链接,可以从mysq官网查找)到当前目录下 方法2.到mysql官网下载包之后通过xftp传到linux 第二步:解压tar ...
- 怎样安装并编译TypeScript?
1. 使用: npm -v 查看是否安装了 npm , 如果没有安装, 请前往 Nodejs 官网 下载安装, 下图表示已经安装 npm , 版本为: 6.9.0 . PS C:\Users\Adm ...
- Scala学习十七——类型参数
一.本章要点 类.特质.方法和函数都可以有类型参数 将类型参数放置在名称之后,以方括号括起来 类型界定的语法为T<:UpperBound.T>:LowerBound.T<%ViewB ...
- 泛型和DataTable的属性
泛型转DataTable public DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) wher ...