读取 java 中的文本文件,想检查它使用哪种换行符

Reading a text file in java, want to check what kind of line break it uses

我得到了两个文本文件,一个使用 \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

您的代码不会。第二个文件实际上并不包含字符“\”。相反,它包含换行符和回车 return 或仅包含换行符。如果您正在测试 '\n',您实际上想要测试字符 0x0A(或字符 10)。你会想要对此进行测试。

我的建议是确保您正在测试正确的角色。如果是,那么 post 获取您正在解析的文件样本将有助于使问题更清楚。

(我知道这应该是评论而不是答案,但我现在不能 post 评论)。

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

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