Wow*_*Bow 2 java csv file filereader
我正在处理一个包含多达一千行的文本文件.一个文本文件中有多个页眉和页脚.所以我不需要处理包含@h和@f的行.它告诉我事务的开始和结束(数据库事务,我将在一个事务中将这些记录保存到DB).
样本记录如下.虽然这条线达到了一千行而且列数达到了40列.从每一行我只寻找一个特定的数据,即(例如,我需要从位置8到30获取一个名字,从60到67岁的年份和喜欢的名字).该位置可能是下一个空格或字符串之间.因此,我不想将每行的数据放入缓冲区/内存中来处理它,因为我只对它们中的一些感兴趣.CSV文件是否允许从一行中的特定位置获取数据?我应该使用什么来获得更好的性能(尽可能快地处理数据而不占用太多内存.)?我正在使用Java
@h Header
@074VH01MATT TARA A5119812073921 RONG HI DE BET IA76200 201108222 0500 *
@074VH01KAYT DJ A5119812073921 RONG DED CR BET IA71200 201108222 0500 *
@f Footer
@h Header
@074VH01MATT TARA A5119812073921 RONG HI DE BET IA76200 201108222 0500 *
@074VH01KAYT DJ A5119812073921 RONG DED CR BET IA71200 201108222 0500 *
@f Footer
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案:
import java.io.*;
class ReadAFileLineByLine
{
public static void main(String args[])
{
try{
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Loop through and check if a header or footer line, if not
//equate a substring to a temp variable and print it....
while ((strLine = br.readLine()) != null) {
if (!(strLine.charAt(1) == "h" || strLine.charAt(1) == "f"))
String tempName = strLine.substring(8,31);
System.out.println(tempName);
}
//Close the input stream
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你正在寻找的是这样的东西吗?