从文件中读取时跳过每N行

时间:2014-04-28 16:26:32

标签: java file

我试图读取包含表格中数据的文件,

0 160 76 160
0 320 11 320
0 960 470 960
960
0 12 6 12
0 24 7 24
0 1500 302 1500
3000
0 70 33 70
0 140 60 140
0 784 74 784
3920

我想跳过包含单个值的每4行(例如4,8,12,..等)。 我试过这种方式,

Scanner scan = new Scanner(new FileInputStream("demofile.txt"));
int linenum = 0;
while(scan.hasNextLine()){
  if(linenum != 0 && linenum % 4 == 0){
     linenum++;
     continue;
  }
  else{
     String str = scan.nextLine();
     StringTokenizer st = new StringTokenizer(str, " ");
     //Extract four tokens from single line
     String a = st.nextToken();
     String b = st.nextToken(); // This line throws java.util.NoSuchElementException
     //and so on..
     //other stuff
     ...
     linenum++;
  }
}

然而,它不起作用,我得到了以下错误跟踪:

Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at ReadDemo.main(ReadDemo.java:48) //line 48  is second `st.nextToken()` in above code

表示我正在读取文件的末尾, 上述逻辑有什么问题? 请帮忙。感谢。

1 个答案:

答案 0 :(得分:2)

从1开始亚麻,您的程序将正常运行。 而且,亚麻的增量很难实施。 尝试这样的事情:

linenum = 1;
while (scan.hasNextLine())
{
    String line = scan.nextLine();
    if ((linenum % 4) > 0)
    {
        StringTokenizer stringTokenizer = new StringTokenizer(line, " ");
        ... blah
    }

    ++linenum;
}