在java中读取文本文件时,要检查它使用了哪种换行符

在java中读取文本文件时,要检查它使用了哪种换行符,java,escaping,line-breaks,Java,Escaping,Line Breaks,我得到了两个文本文件,一个用于\n换行符,另一个用于\r\n。我只是想看看这两个是哪一个。我想使用BufferedReader逐字符读取并搜索\(使用\),然后检查下一个字符是什么,但是当我在txt文件中搜索任何\s时,我没有得到任何结果,循环就结束了 现在,我只是想通过打印出\和它后面的任何字符来进行测试,所以我应该在运行文件时打印出一堆\n或\r,但我只是完成了打印。有什么建议吗 char x; while(reader.ready()) { x = (char) reade

我得到了两个文本文件,一个用于\n换行符,另一个用于\r\n。我只是想看看这两个是哪一个。我想使用BufferedReader逐字符读取并搜索\(使用\),然后检查下一个字符是什么,但是当我在txt文件中搜索任何\s时,我没有得到任何结果,循环就结束了

现在,我只是想通过打印出\和它后面的任何字符来进行测试,所以我应该在运行文件时打印出一堆\n或\r,但我只是完成了打印。有什么建议吗

char x;
  while(reader.ready())
  {
    x = (char) reader.read();
    if(x == '\\')
         System.out.println(x + "" + (char) reader.read());             
  }
System.out.println("Done");

查看您正在解析的文本类型将非常有用

例如,如果您的文件如下所示:

The lazy brown dog\n jumped over the fox.\n
The lazy brown dog
jumped over the fox
您当前的代码应该可以工作。但是,如果文件如下所示:

The lazy brown dog\n jumped over the fox.\n
The lazy brown dog
jumped over the fox
你的代码不会。第二个文件实际上不包含字符“\”。相反,它包含换行符和回车符,或者仅包含换行符。如果您正在测试“\n”,您实际上需要测试字符0x0A(或字符10)。你可能想测试一下

我的建议是确保你正在测试合适的角色。如果您是,那么发布您正在解析的文件的示例将有助于使问题更清楚


(我知道这可能是一个评论而不是一个答案,但我现在不能发表评论)。

您混淆了一个字符
\r
和一个由两个字符组成的字符串
\
r
。下面的代码应该适用于您:

char charValue;
while ((charValue = (char) reader.read()) != -1) {
    if ('\n' == charValue) {
        System.out.println("\\n");              
    }    
    if ('\r' == charValue) {
        System.out.println("\\r");              
    }           
}

reader.read()不返回int吗?您不能查找\r和\n的整数值吗?这表明值10和13分别是换行符和回车符。您不知道“\n”和“\r”是什么。它们是单个字符,而不是两个字符。”\n'的值为ASCII值10,'\r'的值为13。