0

我尝试使用 Path 接口;

//get a path object with relative path
Path filePath = Paths.get("C:\\Test\\filename.txt");
System.out.println("The file name is: " + filePath.getFileName());
Path filePath2 = Paths.get("/home/shibu/Desktop/filename.txt");
System.out.println("The file name is: " + filePath2.getFileName());

输出就像;

The file name is: C:\Test\filename.txt
The file name is: filename.txt

对于 windows 文件,它打印完整路径,对于 linux 文件,它只打印文件名。

为什么会有这种差异?

4

1 回答 1

3

简单:在 Linux 上,文件名中唯一的非法字符是/0 字节。其他所有内容,包括\换行符和转义序列,都是有效的。

这意味着C:\Test\filename.txt是 Linux 上的有效文件名。Java 运行时不会试图变得聪明并猜测这可能是 Windows 路径。

请注意,当您使用 时,这是不同/的:在使用 Java 时,这是 Windows 上的有效路径分隔符。因此,该路径在 LinuxWindowsa/foo.txt上都是相对路径。

Paths.get("/C:/Test/filename.txt");这意味着您可以使用例如在 Windows 上打开文件。

于 2013-10-01T10:26:08.920 回答