在Linux中的文件上有奇怪的getName()结果

时间:2012-12-29 12:17:30

标签: java linux windows

我有一些代码从UNC路径读取名称:

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

在Windows上,这给出了:

file.txt

但在Linux上它给出了:

//fileshare/folder/file.txt

为什么?

2 个答案:

答案 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()应确保完整路径的一致解析,无论您运行的平台如何。