我正在尝试编写一个程序,该程序从用户指定的文件中读取文本。现在,这个程序应该检测到一个空行。
这是我尝试失败的原因:
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因为空格,但它没有。
感谢您的时间,我很高兴您有任何建议。
答案 0 :(得分:1)
这是因为比较错了。您无法使用==
来比较两个字符串,您需要使用equals
方法:
if(line.equals(""))
由于您正在检查空字符串,您也可以编写
if(line.isEmpty())
答案 1 :(得分:1)
BackSlash是完全正确的,已经回答了你的问题。我想补充说您的代码有一些错误:
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("")) { ... }
或者您可以使用任何替代方式。