我正在尝试查找文件的 EOL
字符。我尝试了以下代码段:
java.io.FileInputStream inputStream = null;
inputStream=new java.io.FileInputStream (inputFile.trim());
java.util.Properties p = new java.util.Properties(System.getProperties());
p.load(inputStream);
System.setProperties(p);
String lineSeperator=System.getProperties().getProperty("line.separator");
System.out.println("--"+lineSeperator);
我在这里得到的结果总是 \r\n
,即使我正在读取一个 Linux 源文件,其中分隔符应该是 \n
。
我做错了什么?
最佳答案
System.getProperty("line.separator")
返回操作系统的默认行分隔符。它与给定文件使用的行分隔符无关。
要找到它,请将文件作为字符流打开,并遍历字符,直到找到 '\r'
或 '\n'
。如果你首先找到 '\n'
,你就有了一个 unix 文件。如果您发现 '\r'
后跟 '\n'
,则您有一个 windows 文件。如果您发现 '\r'
后面没有跟 '\n'
,则您有一个旧的 Mac 文件。
这当然假设文件首先是一个文本文件,文件中使用了一种 EOL,并且您知道文件的编码。如果您不知道编码,您可以使用相同的算法并使用字节流而不是字符流。
请注意,在大多数情况下,这是无关紧要的,因为 Java 具有逐行读取文件的 API,并且可以很好地处理 EOL 的所有组合。
关于java - 如何在java中获取任何文件的EOL字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8969501/