Dar*_*ava 4 java file path filepath
我有这样的文件路径:
/home/Dara/Desktop/foo/bar/baz/qux/file.txt
Run Code Online (Sandbox Code Playgroud)
在Java中,我希望能够获得前两个文件夹.IE浏览器.baz/qux
无论文件路径长度或操作系统如何(文件路径分隔符如/
:
和\
).我试图使用该subpath()
方法,Paths
但我似乎无法找到获取文件路径长度的通用方法.
然而,还不是很漂亮,你猜的方向是:
File parent = file.getParentFile();
File parent2 = parent.getParentFile();
parent2.getName() + System.getProperty("path.separator") + parent.getName()
Run Code Online (Sandbox Code Playgroud)
另外一个选项:
final int len = path.getNameCount();
path.subpath(len - 3, len - 1)
Run Code Online (Sandbox Code Playgroud)
编辑:您应该检查len或捕获它IllegalArgumentException
以使您的代码更健壮.
方法getNameCount()
和getName(int index)
ofjava.nio.Path
应该可以帮助您:
File f = new File("/home/Dara/Desktop/foo/bar/baz/qux/file.txt");
Path p = f.toPath();
int pathElements = p.getNameCount();
String topOne = p.getName(pathElements-2).toString();
String topTwo = p.getName(pathElements-3).toString();
Run Code Online (Sandbox Code Playgroud)
请注意,在将 的结果getNameCount()
用作 的索引之前,应检查其有效性getName()
。