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()を返します/fileshare/folder/file.txt。これは、Unix システムで慣習的 (必須?) であるように、複数のスラッシュが 1 つに削減されることを示しています。

もちろん、UNC パスは、Windows 以外では意味がありません。

于 2012-12-29T12:25:13.320 に答える
1

Apache Commons の org.apache.commons.io.FilenameUtils を使用してみてください。メソッド getName() は、実行しているプラ​​ットフォームに関係なく、完全パスの一貫した解析を保証するはずです。

于 2016-01-10T08:29:54.540 に答える