java-处理大容量文本文件,行内分格符为TAB的方法
2024-10-11 12:25:47
以处理某sql文件为例
源文件中行格式为:
123456 7895433 xxxxx yyyyy zzzzz
行间分隔符为 TAB.
转换完后文件中行的格式为:
123456,7895433,xxxxx,yyyyy,zzzzz
package tool; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter; public class TransferFile { public static void main(String[] args) throws IOException
{
File f=new File("F:/mernis/data_dump.sql");
File filewrite=new File("F:/mernis/mernis-test.txt");
int count=0;
if(f.exists())
{
FileReader read=new FileReader(f);
BufferedReader buff=new BufferedReader(read);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filewrite, true)));
boolean isEnd=false;
int i=0;
while(!isEnd)
{
String line;
i++;
try {
line = buff.readLine();
if(line==null)
{
isEnd=true;
}
else
{ if (i>=76&&i<=49611784)
{
String[] lineArr = line.split("\\t");
String newline="";
for (int j = 0; j < lineArr.length; j++) {
if (j<lineArr.length) {
newline=newline+lineArr[j]+",";
}
else
newline=newline+lineArr[j];
}
out.write(newline+"\r\n");
}
count++;
// if (i==100) {
// return ;
// }
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } System.out.println("文件共有"+count+"行");
buff.close();
out.close(); }
else
{
System.out.println("你输入的文件不存在,请正确使用:");
} }
}
TransferFile.java
其中关键代码为:
String[] lineArr = line.split("\\t");
String newline="";
for (int j = 0; j < lineArr.length; j++)
{
if (j<lineArr.length)
{
newline=newline+lineArr[j]+",";
}
else
newline=newline+lineArr[j];
}
过程中曾尝试用line.replace("\\t",",")的方法将TAB替换为",",但是始终不成功,所以这里采用先用TAB分割字符串,再用逗号连接的方式。
最新文章
- ORA-12638:身份证明检索失败
- iOS 单例模式范例
- Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用
- QSpinBox 和 QSlider 联合使用方法
- Keil 4.0 生成bin文件
- 02day1
- aix 计算性内存和文件内存
- bash:ifconfig command not found for contos7.0
- 用Python学分析 - t分布
- Django2.1.2创建默认管理后台
- .NET Core 实现 Redis 批量查询指定格式的Key
- MySql在Mac上的安装与配置详解
- 关于用户输入恶意js
- JavaScript数组(二)实例
- 页面引入js问题
- .Net core使用EF Core Migration做数据库升级
- Mac下软件包管理器-homebrew
- Dockerfile 指令汇总及解析
- 使用maven-shade-plugin插件解决spark依赖冲突问题
- Java读取Excel数据
热门文章
- GreenDao3.2使用详解(增,删,改,查,升级)
- python网络编程-TCP服务端的开发
- 07-Spring ConfigurationClassPostProcessor
- OpenCV图像处理中“投影技术”的使用
- Myabtis-Plus之QueryWrapper常用方法
- 华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致
- Dynamic Programming 动态规划入门笔记
- 剑指offer--孩子们的游戏(圆圈中最后剩下的数字)
- Java【IO流、字节流、字符流】
- 12.VUE - v-bind 详解