我有一些从 UNC 路径读取名称的代码:
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()
return /fileshare/folder/file.txt
,这表明多个斜杠减少为一个,这是 Unix 系统上的习惯(必需?)。
当然,UNC 路径在 Windows 之外的任何设备上都毫无意义。
尝试使用 Apache Commons 中的 org.apache.commons.io.FilenameUtils,getName() 方法应确保对完整路径的一致解析,无论您运行的平台如何。