为什么File.getParent()在窗口中返回没有斜杠的路径?

时间:2015-11-16 11:29:20

标签: java file parent

我有一个在Linux中运行良好的java程序,但它在windows中返回错误的值。 我有一个File变量,我尝试使用getParent()方法检索其父路径。 Windows中的结果是没有斜杠的路径。

CScrollView

有谁知道这个问题的原因?

3 个答案:

答案 0 :(得分:2)

  

我尝试修改配置文件并在其中放入此路径。我使用了.replaceAll()方法。

那是你的问题!

String.replaceAll(regex, replacement)的第二个参数中的任何反斜杠字符都被视为转义字符。阅读javadocs了解详细信息。

在你的情况下,文件分隔符退格是未知的转义,而replaceAll正在悄悄地“吃掉”它们。

答案 1 :(得分:0)

返回abstract pathname http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getParent()

因此请将代码更改为store.getParentFile.getPath()

答案 2 :(得分:0)

我找到了这个问题的解决方案:

我用过我用replaceAll()方法修改配置文件,在第二个参数中我放了我的路径(在Windows中是C:\ Users \ Myname \ Desktop \ Test)。在the Javadoc中提到替换字符串中的反斜杠(\)和美元符号($)可能导致结果与被视为文字替换字符串时的结果不同。

所以为了解决这个问题我做了:

...
content.replaceAll("root/ca", store.getParent().replaceAll("\\\\", "/") );

它直接在linux上运行,因为在linux中默认的文件分隔符是" /"。