我有一个可以从文本文件中读取的InputStream。我注意到输入流不会从空白的下一行读取。
示例文本文件:
[This is
A test file
Here.]
代码:
while ((str = br.readLine())!= null) {
System.out.println(str);
}
某些文本文件之间会有多个中断行。如何让输入流接受断行?
从示例文本文件中可以看出,'[this is'后跟一个空行,然后是'A test file'。如何读取两组字符串之间的空行? (这是我对换行符/换行符的定义)
答案 0 :(得分:3)
你的意思是?
while ((str = br.readLine())!= null && str.trim().length()>0) {
System.out.println(str);
}
这为您提供了所有非空行。
答案 1 :(得分:1)
BufferedReader将读取文件中的所有行,无论它们是否为空白。它将寻找换行符:Windows上的LF + CR和GNU / Linux上的LF。根据BufferedReader文档:
一条线被视为终止 通过任何一个换行符('\ n'),a 回车('\ r')或马车 返回后紧接着一个 换行。
因此,它取决于您的文本文件的真实外观。它是否真的在行之间有回车和换行,还是只是以这种方式显示?你可以通过在Hex编辑器中查看文件来找到它(LF是0x0A,CR是0x0D)。如果是这样,那么BufferedReader应该给你那些空行。
答案 2 :(得分:0)
对不起,这是一个接受InputStream的BufferedReader。 BufferedReader确实读取了每一行,包括下一行/中断行/换行符。问题在于我写的算法只是错过了下一行/断行/换行符。对不起,麻烦和麻烦。
感谢所有答案。