如何覆盖默认的file.separator?

时间:2014-03-01 19:01:27

标签: java path

我正在使用Windows 7。 这是我的代码:

public class DriveLettersList {
    public static void main( String[] args ) {
        System.setProperty( "file.separator", "/" );

        System.out.println( System.getProperty( "file.separator" ) );
        System.out.println( Paths.get( "hello", "my", "word" ) );
}

输出令人困惑:

/
hello\my\word

为什么Paths.get会返回Windows的默认路径分隔符?

1 个答案:

答案 0 :(得分:4)

注意Paths.get(..)

的javadoc
  

有关字符串如何加入的详细信息是提供者特定的   通常他们将使用name-separator加入   分离器。

可以使用

检索名称分隔符
FileSystems.getDefault().getSeparator()

WindowsFileSystem的Windows上,implemented as

@Override
public String getSeparator() {
    return "\\";
}

使用此FileSystem实现,您无法更改它。

这在Unix系统上可能有所不同。实际上,it seems it isn't

public final String getSeparator() {
    return "/";
}