java - 如何在java中获取任何文件的EOL字符

标签 java file-io

我正在尝试查找文件的 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/

相关文章:

java - 加载 .jpeg 并设置为 JLabel?

c - fscanf 不能正常工作

java - 静态导入和构造函数

java - 如何通过按键和释放来开始和结束循环?

c# - 带进度条的文件复制

c++ - 如何找到 fprintf() 实际错误?

C++ 对非 ASCII 数据文件的支持

JavaFX DPI 感知

java - 想要最常用的英语单词

Java RSA 加密不可重复?