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可以很容易实现这项功能. 首先介绍下基本原理,文件切割说白了就过滤掉文件的部分音视频包,按照什么规则过滤呢? 答案是时间戳.文件中每个视频及音频包都有时 ...
随机推荐
- docker部署zabbix并设置自动发现规则
docker部署zabbix比源码安装简单一些,特此记录: 机器准备: zabbix-server: 192.168.0.150 homeserver zabbix-agent: 192.168. ...
- 记:linux服务器启动重启WEB项目启动成功,长时间卡住未响应
问题 云服务器部署web项目,每次正常启动项目后访问页面很久才能有响应,一直卡在INFO: Deploying web application directory ......长达几分钟以上,极度影响 ...
- hdu 2871 Memory Control (区间合并 连续段的起始位置 点所属段的左右端点)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871 题意: 四种操作: 1.Reset 清空所有内存2.New x 分配一个大小为x的内存块返回,返 ...
- 《C和指针》读书笔记
1. 三字母词 三字母词即用三个字符合起来表示另一个字符,它可以使C环境在某些缺少一些必需字符的字符集上实现. ??( [ ??< { ??= # ??) ] ??> } ??/ \ ?? ...
- storm manual drpc 的远程调用
一.创建server端 public class ManualDRPC { private static final Logger LOG = LoggerFactory.getLogger(Manu ...
- .net操作数据库
1. 自动生化曾的一些查询 可以自定义查询语句 2.自定义查询过程调用 USE [mydb] GO /****** Object: StoredProcedure [dbo].[procLogin] ...
- Linux系列之压缩与解压
1.压缩技术 1.常用命令实例 1.zip格式的压缩与解压缩 zip是压缩指令,unzip是解压指令.zip指令既可以压缩文件,也可以压缩目录.压缩会自动保留源文件,解压会自动保留压缩文件. zip ...
- ros 配置udev
显示已经链接设备 lsusb 显示挂载点 ls /dev/ttyACM* /dev/ttyUSB* 可以看到 ttyUSB0 和 ttyUSB1 对应哪一个设备不确定,因此,我们就需要一种方法来保证每 ...
- 最大流Dinic(模板)
#define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio>//sprintf islower isupp ...
- pb相关小技巧或用法
1.动态post window lwlw = w_main lw.dynamic post event ue_all(ls_no,ls_table) 2.打开隐藏窗口 IF NOT IsValid(w ...