如何检测文件中的新行(或空行)?

时间:2015-08-14 20:42:54

标签: java

我正在尝试编写一个程序,该程序从用户指定的文件中读取文本。现在,这个程序应该检测到一个空行。

这是我尝试失败的原因:

public static void editFile(String filePath) throws FileNotFoundException, IOException {
    file = new File(filePath);
    if(file.exists()) {
        fileRead = new FileReader(file);

        bufferedReader = new BufferedReader(fileRead);

        String line = bufferedReader.readLine();
        System.out.println(line);
        while(line != null) {
            line = bufferedReader.readLine();
            if(line == "") {
                //line = null;
                System.out.println("a");
            }
            System.out.println(line);
        }
    }
}

更清楚:

如果我传入一个带有例如此文本的文本文件:

  

TEST1
     TEST2
     
     TEST3
     
     TEST4

它应该在控制台中打印2 a因为空格,但它没有。

感谢您的时间,我很高兴您有任何建议。

3 个答案:

答案 0 :(得分:1)

这是因为比较错了。您无法使用==来比较两个字符串,您需要使用equals方法:

if(line.equals(""))

由于您正在检查空字符串,您也可以编写

if(line.isEmpty())

How do I compare strings in java?

答案 1 :(得分:1)

BackSlash是完全正确的,已经回答了你的问题。我想补充说您的代码有一些错误:

  • 您没有关闭阅读器
  • 您没有测试第一行是否为空白
  • 您在达到EOF
  • 时正在处理null

以下更正了这些错误。

public static void editFile(String filePath) throws IOException
{
    File file = new File(filePath);
    if (file.exists())
    {
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        try
        {
            String line;
            while ((line = bufferedReader.readLine()) != null)
            {
                if (line.isEmpty())
                {
                    //line = null;
                    System.out.println("a");
                }
                System.out.println(line);
            }
        } finally {
            bufferedReader.close();
        }
    }
}

输出是:

test1
test2
a

test3
a

test4

注意:除了" a"之外,您还在打印空白行。

答案 2 :(得分:0)

你做错了的是你要比较变量本身,而不是它的值与空字符串。 通常,字符串类中有内置函数,它们返回 true & false 用于检查它是否与某物有关。

if(line.equals("")) { ... }

或者您可以使用任何替代方式。