给出这样的文件路径:
Path filePath; // "/Users/me/Desktop/archive.zip"
我想要一个函数,通过删除其文件扩展名将此文件路径转换为目录路径,并将文件路径视为目录路径。例如。例如:
Path dirPath = asDirectoryPath(filePath); // "/Users/me/Desktop/archive"
我尝试了什么?
好吧,我有一个解决方案,我认为这有点难看:
private Path asDirectoryPath(Path filePath)
{
return Paths.get(path.toString().substring(0, path.toString().lastIndexOf('.')));
}
为什么难看?因为我被迫执行路径进行字符串转换并搜索“。”。符号,假设以下字符是文件扩展名。此功能应该是可移植的,并且应该在Windows和UNIX系统中均可以使用。还有其他正确的解决方案吗?谢谢。
答案 0 :(得分:1)
正则表达式可在此处与split方法一起使用。
path.toString().split("\\.")[0])
答案 1 :(得分:0)
您可以在java.nio中使用getParent()
的{{1}}方法,将Path
根据需要工作到文件,并将Path
返回到文件夹包含文件。如果给定的Path
是一个文件夹,则它返回父文件夹;如果没有父文件夹,则返回null。
Path
您的方法应该看起来像
Path dirPath = filePath.getParent();