如何判断是否已使用BufferedReader读入空行?

Aer*_*sch 5 java io whitespace bufferedreader

我正在阅读一个格式化的文本文件

word
definiton

word
definition
definition

word
definition
Run Code Online (Sandbox Code Playgroud)

所以我需要继续尝试我是否在定义或不基于我何时达到这些emtpy行.事情就是,BufferedReader丢弃\n字符,并以某种方式比较那条空行String ""并没有像我想象的那样注册.我怎么能这样做呢.

dur*_*597 17

  1. 确保你使用:myString.equals("")不是myString == "".1.6之后,你可以使用myString.isEmpty()
  2. 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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果是1.6或更大,请使用[`String#isEmpty`](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#isEmpty%28%29). (2认同)

Ste*_*n C 5

BufferedReader.readLine()返回一个空字符串,如果该行是空的.

javadoc中说:

返回:包含行内容的String,不包括任何行终止字符;如果已到达流的末尾,则返回null.

如果您似乎没有看到空字符串,则该行不为空,或者您没有正确测试空字符串.