給定這樣的文件路徑:Path filePath; // "/Users/me/Desktop/archive.zip"我想要一個(gè)函數(shù),通過(guò)刪除其文件擴(kuò)展名將此文件路徑轉(zhuǎn)換為目錄路徑,并將文件路徑視為目錄路徑。例如:Path dirPath = asDirectoryPath(filePath); // "/Users/me/Desktop/archive"我嘗試了什么?好吧,我有一個(gè)解決方案,我認(rèn)為這很丑陋:private Path asDirectoryPath(Path filePath){ return Paths.get(path.toString().substring(0, path.toString().lastIndexOf('.')));}為什么丑陋?因?yàn)槲冶黄葓?zhí)行路徑進(jìn)行字符串轉(zhuǎn)換并搜索“。”。符號(hào),假設(shè)以下字符是文件擴(kuò)展名。此功能應(yīng)該是可移植的,并且應(yīng)該在Windows和UNIX系統(tǒng)中均可以使用。還有其他正確的解決方案嗎?謝謝。
2 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用java.nio中的getParent()方法Path,它將Path對(duì)文件所需的工作,并向包含文件Path的文件夾返回a 。如果給定的Path是文件夾,則它返回父文件夾;如果沒(méi)有父文件夾,則返回null。
Path dirPath = filePath.getParent();
你的方法應(yīng)該看起來(lái)像
private Path asDirectoryPath(Path filePath) {
return Paths.get(filePath.getParent());
}

茅侃侃
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
正則表達(dá)式可在此處與split方法一起使用。
path.toString().split("\\.")[0])
添加回答
舉報(bào)
0/150
提交
取消