我有一些代码从UNC路径读取名称:
File f = new File(//fileshare/folder/file.txt)
System.out.println(f.getName())
在Windows上,这给出了:
file.txt
但在Linux上它给出了:
//fileshare/folder/file.txt
为什么?
答案 0 :(得分: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系统上是习惯的(必需的?)。
当然,除了Windows之外,任何UNC路径都没有意义。
答案 1 :(得分:1)
尝试使用Apache Commons的org.apache.commons.io.FilenameUtils,方法getName()应确保完整路径的一致解析,无论您运行的平台如何。