如何读取文本文件中字符串数据的特定位置

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)

Fai*_*afe 5

这是我的解决方案:

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)

你正在寻找的是这样的东西吗?