java-处理大容量文本文件,行内分格符为TAB的方法
以处理某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分割字符串,再用逗号连接的方式。
java-处理大容量文本文件,行内分格符为TAB的方法的更多相关文章
- java读取大容量excel之二(空格、空值问题)
最近在项目中发现,对于Excel2007(底层根本是xml) ,使用<java读取大容量excel之一>中的方式读取,若待读取的excel2007文件中某一列是空值,(注意,所谓的空值是什 ...
- Java读写大文本文件(2GB以上)
如下的程序,将一个行数为fileLines的文本文件平均分为splitNum个小文本文件,其中换行符'r'是linux上的,windows的java换行符是'\r\n': package kddcup ...
- java的基础语法(标识符 修饰符 关键字)
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- atitit.高性能遍历 文本文件行 attilax总结
atitit.高性能遍历 文本文件行 attilax总结 文件读写有以下几种常用的方法 1 通常io读取2.5s 1 nio读取或许越高的.. 2 NIO通常采用Reactor模式,AIO通常采用Pr ...
- spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...
- Java语言中有4种访问修饰符
转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...
- 用java实现从命令行接收多个数字,求和之后输出结果。
用java实现从命令行接收多个数字,求和之后输出结果. 1 设计思想: (1)建立类. (2)输出参数个数. (3)定义int型的num和sum,分别用来存储参数和参数的和. (4)用for循环讲参数 ...
- java的-D命令行参数 mvn -D参数
java的-D命令行参数 我们会用mvn启动一个应用,如下的命令行: MAVEN_OPTS="-XX:PermSize=256m -XX:MaxPermSize=512m" mvn ...
- Java SE7虚拟机指令操作码助记符
本文转载自Java SE7 虚拟机指令操作码助记符 导语 在Class文件中,Java方法里的方法体,也就是代表着一个Java源码程序中程序的部分存储在方法表集合的Code属性中.存储在Code属性中 ...
随机推荐
- java常见面试题3:线程间通信
写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z. 打印顺序为12A34B56C78D--5152Z.要求用线程间的通信. 代码清单: class Printer { private in ...
- 简单ping确定网络故障
1.ping localhost (127.0.0.1) 目的:确定TCP/IP有无问题 2.ping本机地址 用来检测网卡驱动有无问题 如何获取本机地址? win+r cmd 输入ipconfig/ ...
- CF524F And Yet Another Bracket Sequence 题解
题目链接 算法:后缀数组+ST表+贪心 各路题解都没怎么看懂,只会常数巨大的后缀数组+ST表,最大点用时 \(4s\), 刚好可以过... 确定合法序列长度 首先一个括号序列是合法的必须满足以 ...
- PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642
PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642 题目描述: At the beginning of ever ...
- istio服务条目(ServiceEntry)介绍
使用服务条目资源(ServiceEntry)可以将条目添加到 Istio 内部维护的服务注册表中.添加服务条目后,Envoy 代理可以将流量发送到该服务,就好像该服务条目是网格中的服务一样.通过配置服 ...
- C++并发与多线程学习笔记--async、future、packaged_task、promise
async future packaged_task promise async std:async 是个函数,用来启动一个异步任务,启动起来一个异步任务之后,返回一个std::futre对象,启动一 ...
- 【C/C++】malloc和new的区别
malloc和new的区别 malloc是C语言的内存申请函数.new是C++语言的运算符.所以在.c文件中无法使用new. malloc申请空间时,传递的是size.new申请空间时,传递的是typ ...
- 记一次metasploitable2内网渗透之1099端口
RMI是REMOTE METHODINVOCATION的简称,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用.一个RMI对象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨 ...
- 无法Ping通阿里云服务器的公网IP地址的解决方法
解决步骤: 1.打开控制台2.打开防火墙3.添加规则添加规则的详情页,可以添加全部TCP也可以自定义添加一定端口范围的TCP:
- 网络编程NIO之Reactor线程模型
目录 单Reactor线程模型 基于工作线程的Reactor线程模型 多Reactor线程模型 多Reactor线程模型示例 结束语 上篇文章中写了一些NIO相关的知识以及简单的NIO实现示例,但是示 ...