UNCパスから名前を読み取るコードがあります。
File f = new File(//fileshare/folder/file.txt)
System.out.println(f.getName())
Windowsでは、これにより次のことが可能になります。
file.txt
しかし、Linuxでは次のようになります。
//fileshare/folder/file.txt
なぜ?
私のシステム(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 以外では意味がありません。
Apache Commons の org.apache.commons.io.FilenameUtils を使用してみてください。メソッド getName() は、実行しているプラットフォームに関係なく、完全パスの一貫した解析を保証するはずです。