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

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

word definiton word definition definition word definition 

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

  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); } } } 

如果该行为空,则BufferedReader.readLine()返回一个空字符串。

javadoc说:

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

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

 line = reader.readLine(); if ("".equals(line)) { //this is and empty line... } 

我不知道你是怎么试图检查字符串是空的,所以我无法解释为什么它不适合你。 您是否可以使用==进行比较? 在这种情况下,它不起作用,因为==比较引用,而不是对象内容。

此代码段会跳过空行,仅打印包含内容的行。

  String line = null; while ((line = br.readLine()) != null) { if (line.trim().equals("")) { // empty line } else { System.out.println(line); } } 

仅跳过包含空格字符的行。

 try (BufferedReader originReader = getReader("now")) { if (StringUtils.isEmpty(originReader.readLine())) { System.out.printline("Buffer is empty"); }