为什么 File.getParent() returns windows 中没有斜线的路径?
Why File.getParent() returns a path without slashes in windows?
我有一个 java 程序在 linux 中运行良好,但它 returns 在 windows 中有错误的值。
我有一个 File 变量,我尝试使用 getParent() 方法检索它的父路径。 windows 中的结果是没有斜杠的路径。
...
File store = fileChooser.getSelectedFile ();
System.out.println(store.getParent());
// prints C:UsersMynameDesktopTest
// expected C:/Users/Myname/Desktop/Test
有人知道这个问题的原因吗?
它returns abstract pathname
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getParent()
所以将代码更改为 store.getParentFile.getPath()
What I try to is modifying a configuration file and put within it this path. I used .replaceAll() method.
那是你的问题!
String.replaceAll(regex, replacement)
的第二个参数中的任何反斜杠字符都被视为转义字符。阅读 javadoc 了解详细信息。
在你的例子中,文件分隔符退格是未知的转义,replaceAll
是 "eating" 它们。
我找到了这个问题的解决方案:
我用我用replaceAll()方法修改了一个配置文件,在第二个参数里我放了我的路径(在windows中是C:\Users\Myname\Desktop\Test)。 the Javadoc 中提到,替换字符串中的反斜杠 (\) 和美元符号 ($) 可能导致结果与将其视为文字替换字符串时的结果不同。
所以为了解决这个问题我做了:
...
content.replaceAll("root/ca", store.getParent().replaceAll("\\", "/") );
它直接适用于 linux,因为在 linux 中,默认文件分隔符是“/”。
我有一个 java 程序在 linux 中运行良好,但它 returns 在 windows 中有错误的值。 我有一个 File 变量,我尝试使用 getParent() 方法检索它的父路径。 windows 中的结果是没有斜杠的路径。
...
File store = fileChooser.getSelectedFile ();
System.out.println(store.getParent());
// prints C:UsersMynameDesktopTest
// expected C:/Users/Myname/Desktop/Test
有人知道这个问题的原因吗?
它returns abstract pathname
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getParent()
所以将代码更改为 store.getParentFile.getPath()
What I try to is modifying a configuration file and put within it this path. I used .replaceAll() method.
那是你的问题!
String.replaceAll(regex, replacement)
的第二个参数中的任何反斜杠字符都被视为转义字符。阅读 javadoc 了解详细信息。
在你的例子中,文件分隔符退格是未知的转义,replaceAll
是 "eating" 它们。
我找到了这个问题的解决方案:
我用我用replaceAll()方法修改了一个配置文件,在第二个参数里我放了我的路径(在windows中是C:\Users\Myname\Desktop\Test)。 the Javadoc 中提到,替换字符串中的反斜杠 (\) 和美元符号 ($) 可能导致结果与将其视为文字替换字符串时的结果不同。
所以为了解决这个问题我做了:
...
content.replaceAll("root/ca", store.getParent().replaceAll("\\", "/") );
它直接适用于 linux,因为在 linux 中,默认文件分隔符是“/”。