我正在阅读一个像
这样的文本文件word
definiton
word
definition
definition
word
definition
所以我需要继续尝试根据我到达那些emtpy行的时间来定义或不定义。事情是,BufferedReader
丢弃\n
个字符,并且以某种方式将该空行与String ""
进行比较并没有像我想象的那样进行注册。我怎么能这样做呢。
答案 0 :(得分:17)
myString.equals("")
而不是myString == ""
。 1.6之后,您可以使用myString.isEmpty()
myString.trim()
删除额外的空格以下是一些代码:
public void readFile(BufferedReader br) {
boolean inDefinition = false;
while(br.ready()) {
String next = br.readLine().trim();
if(next.isEmpty()) {
inDefinition = false;
continue;
}
if(!inDefinition) {
handleWord(next);
inDefinition = true;
} else {
handleDefinition(next);
}
}
}
答案 1 :(得分:5)
如果该行为空,则BufferedReader.readLine()
返回一个空字符串。
javadoc说:
返回:包含行内容的String,不包括任何行终止字符;如果已到达流的末尾,则返回null。
如果您似乎没有看到空字符串,则该行不为空,或者您没有正确测试空字符串。
答案 2 :(得分:1)
line = reader.readLine();
if ("".equals(line)) {
//this is and empty line...
}
我不知道你是怎么试图检查字符串是空的,所以我无法解释为什么它对你不起作用。您是否可以使用==
进行比较?在这种情况下,它不起作用,因为==
比较了引用,而不是对象内容。
答案 3 :(得分:0)
此代码段会跳过空行并仅打印包含内容的行。
String line = null;
while ((line = br.readLine()) != null) {
if (line.trim().equals("")) {
// empty line
} else {
System.out.println(line);
}
}
也会跳过仅包含空格字符的行。
答案 4 :(得分:-1)
try (BufferedReader originReader = getReader("now")) {
if (StringUtils.isEmpty(originReader.readLine())) {
System.out.printline("Buffer is empty");
}