我有絕對路徑的文件:/Users/ivan/test.txt獲取完整的文件路徑(不包括別名)在Java中
String absolutePath = file.getAbsolutePath();
但我需要完整的路徑:/卷/ Macintosh HD /用戶/ ivan/test.txt(「/」是「Macintosh HD」的別名)。
我已經嘗試使用getCanonicalPath和FileSystemView,但我總是得到相同的路徑。
我有絕對路徑的文件:/Users/ivan/test.txt獲取完整的文件路徑(不包括別名)在Java中
String absolutePath = file.getAbsolutePath();
但我需要完整的路徑:/卷/ Macintosh HD /用戶/ ivan/test.txt(「/」是「Macintosh HD」的別名)。
我已經嘗試使用getCanonicalPath和FileSystemView,但我總是得到相同的路徑。
(我只需要在卷文件夾中的「/」的別名的真實名稱的文件夾:
...
// ls -al command lists the files and the alias
proc = Runtime.getRuntime().exec("ls -al /Volumes");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
String line;
// match the name between the time and the arrow
Pattern myPatter = Pattern.compile("[0-9]+:[0-9]+ (.*?) -> " + "/");
Matcher matcher;
while ((line = stdInput.readLine()) != null) {
if (line.indexOf(" -> ") != -1){
// get the real volume name
matcher = myPatter.matcher(line);
if (matcher.find())
return matcher.group(1);
}
}
...
查看Aliases.h文件。具體而言,您需要查看功能FSIsAliasFile()
和FSResolveAlias
功能系列,可能爲FSResolveAlias()
或FSResolveAliasFile()
。
我還沒有嘗試過這個,但它看起來像應該給你的東西。
我認爲沒有辦法用純Java獲得這條路徑。你將不得不編寫一個本地共享對象。
馬爺有最後我沒有使用運行時它的一些imporvements與Java-7和FileSystem
爲什麼你需要'/ Volumes/Macintosh HD'? –
@ThomasMueller因爲我需要知道文件的大小。 – Ivan