2012-12-29 123 views
1

我有一些代碼,從UNC路徑讀取名稱:奇怪的getName()導致

File f = new File(//fileshare/folder/file.txt) 
System.out.println(f.getName()) 

在Windows上給出了:

file.txt 

,但在Linux上得到:

//fileshare/folder/file.txt 

爲什麼?

+1

你可以在兩個系統上打印'File.separatorChar',看看會發生什麼? – dasblinkenlight

回答

4

在我的系統(Ubuntu的12.04),它給file.txt

$ cat Test.java 
import java.io.File; 
class Test { 
    public static void main(String[] args) { 
    File f = new File("//fileshare/folder/file.txt"); 
    System.out.println(f.getName()); 
    } 
} 
$ javac Test.java && java Test 
file.txt 

f.getPath()回報/fileshare/folder/file.txt,這表明多斜線就減少了一個,因爲(需要?)在Unix系統上是習慣。

當然,UNC路徑在除Windows以外的任何地方都沒有意義。

0

嘗試使用來自Apache Commons的org.apache.commons.io.FilenameUtils,getName()方法應確保對完整路徑進行一致的解析,無論您正在運行的平臺如何。

相關問題