我有一个在Linux中运行良好的java程序,但它在windows中返回错误的值。 我有一个File变量,我尝试使用getParent()方法检索其父路径。 Windows中的结果是没有斜杠的路径。
CScrollView
有谁知道这个问题的原因?
答案 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中默认的文件分隔符是" /"。