【问题标题】:Skipping line with BufferedReader使用 BufferedReader 跳线
【发布时间】:2013-10-27 21:46:58
【问题描述】:

在使用 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 会自动跳过空白行。除此之外,我该怎么做呢?

我会跳过()吗?线条的长度可能会有所不同,所以我认为这行不通。

【问题讨论】:

    标签: java bufferedreader lines skip


    【解决方案1】:

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

    在主循环的每次迭代中,将完整的一行读入String。接下来,检查它是否与您要忽略的特定模式匹配(空、仅空白、以# 开头等)。一旦你有了要处理的行,只有在需要时一次迭代String 一个字符。

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

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

    【讨论】:

    • 完美,非常感谢。我想过最后迭代一个字符串,但有点超前了,但这是有道理的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 2015-08-27
      • 2012-05-02
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多