1

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

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

在 Windows 上,这给出:

file.txt

但在linux上它给出:

//fileshare/folder/file.txt

为什么?

4

2 回答 2

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()return /fileshare/folder/file.txt,这表明多个斜杠减少为一个,这是 Unix 系统上的习惯(必需?)。

当然,UNC 路径在 Windows 之外的任何设备上都毫无意义。

于 2012-12-29T12:25:13.320 回答
1

尝试使用 Apache Commons 中的 org.apache.commons.io.FilenameUtils,getName() 方法应确保对完整路径的一致解析,无论您运行的平台如何。

于 2016-01-10T08:29:54.540 回答