如何判断是否已使用BufferedReader读入空行?
我正在阅读一个格式化的文本文件
word definiton word definition definition word definition
所以我需要继续尝试我是否在定义或不基于我何时达到那些emtpy行。 事实是, BufferedReader
丢弃了\n
字符,并以某种方式将该空行与String ""
进行比较,并没有像我想象的那样进行注册。 我怎么能这样做呢。
- 确保使用:
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); } } }
如果该行为空,则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"); }