我有一些代碼,從UNC路徑讀取名稱:奇怪的getName()導致
File f = new File(//fileshare/folder/file.txt)
System.out.println(f.getName())
在Windows上給出了:
file.txt
,但在Linux上得到:
//fileshare/folder/file.txt
爲什麼?
我有一些代碼,從UNC路徑讀取名稱:奇怪的getName()導致
File f = new File(//fileshare/folder/file.txt)
System.out.println(f.getName())
在Windows上給出了:
file.txt
,但在Linux上得到:
//fileshare/folder/file.txt
爲什麼?
在我的系統(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以外的任何地方都沒有意義。
嘗試使用來自Apache Commons的org.apache.commons.io.FilenameUtils,getName()方法應確保對完整路徑進行一致的解析,無論您正在運行的平臺如何。
你可以在兩個系統上打印'File.separatorChar',看看會發生什麼? – dasblinkenlight