我正在尝试查找文件的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
。
我做错了什么?
答案 0 :(得分:9)
System.getProperty("line.separator")
返回操作系统的默认行分隔符。它与给定文件使用的行分隔符无关。
要找到它,请将该文件作为字符流打开,然后对字符进行迭代,直到找到'\r'
或'\n'
。如果您首先找到'\n'
,那么您有一个unix文件。如果您发现'\r'
后跟'\n'
,则会有一个Windows文件。如果您发现'\r'
后面没有'\n'
,则表示您有一个旧的Mac文件。
这当然假设文件首先是文本文件,文件中使用了一种EOL,并且您知道文件的编码。如果您不知道编码,则可以使用相同的算法并使用字节流而不是字符流。
请注意,这在大多数情况下是无关紧要的,因为Java具有逐行读取文件的API,并且可以正常处理所有EOL组合。
答案 1 :(得分:1)
那是因为你正在阅读OS相关的财产。如果你在windows中运行这个程序,即使你的文件是在linux上创建的,你也会得到\ r \ n作为行分隔符。要在输入文件中找到行尾,您需要找到其他方法...也许正则表达式可以帮助您。