2013-10-18 56 views
1

使用BufferedReader读取文件时,我想让它跳过以'#'开头的空白行和行。最终,每个个性,然后添加到一个ArrayList用BufferedReader跳过行

inputStream = new BufferedReader(new FileReader(filename)); 

     int c = 0; 
     while((c = inputStream.read()) != -1) { 
      char face = (char) c; 

      if (face == '#') { 
       //skip line (continue reading at first char of next line) 
      } 
      else { 
       faceList.add(face); 
      } 

除非我记错了,BufferedReader中自动跳过空白行。除此之外,我该如何去做这件事?

我只是跳过()?线条的长度可能会有所不同,所以我认为这不会起作用。

回答

7

不要试图一次读取一个字符的文件。

在主循环的每次迭代中,请在一个完整行中读入String。接下来,检查它是否与您要忽略的特定模式相匹配(空白,仅限空白,从#开始,等等)。一旦你有一条你想要处理的行,那么只要你需要的话,一次迭代一个字符String

这使得检查并忽略与模式更容易匹配的空白行和行。

while((line=in.readline()) != null) 
{ 
    String temp = line.trim(); 
    if (temp.isEmpty() || temp.startsWith("#")) 
     /* ignore line */; 
    else 
     ... 
} 
+0

非常好,非常感谢。我想到最后迭代一个字符串,但有点超出我自己,但这是有道理的。 – rhl13

-1

使用continue。这将继续到任何循环中的下一个项目。

 if (face == '#') { 
      continue; 
     } 
     else { 
      faceList.add(face); 
     }