在java中读取文本文件,想要检查它使用什么类型的换行符

时间:2015-10-23 19:28:11

标签: java escaping line-breaks

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

查看要解析的文本类型会很有用。

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

The lazy brown dog\n jumped over the fox.\n

您当前的代码应该可行。但是,如果文件看起来像这样:

The lazy brown dog
jumped over the fox

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

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

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