2014-03-01 175 views
1

我使用Windows 7 這裏是我的代碼:如何覆蓋默認的file.separator?

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?

回答

4

通知Paths.get(..)

詳細的Javadoc以絃樂如何連接特定供應商,而是 他們通常會使用name-separator作爲 分離器進行連接。

其中名稱分隔符可以用

FileSystems.getDefault().getSeparator() 

檢索凡,在Windows上WindowsFileSystem,這是implemented as

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

有了這個FileSystem實現,你不能改變它。

這在Unix系統上可能會有所不同。其實,it seems it isn't

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

有沒有辦法讓「你好/我的/字」沒有做這樣的事情(.replaceAll ....) – nikopol86

+0

@ nikopol86不與本實施,沒有。它總是返回來自String文字的值。這不能改變。 –