2012-05-11 31 views
0

我有絕對路徑的文件:/Users/ivan/test.txt獲取完整的文件路徑(不包括別名)在Java中

String absolutePath = file.getAbsolutePath(); 

但我需要完整的路徑:/卷/ Macintosh HD /用戶/ ivan/test.txt(「/」是「Macintosh HD」的別名)。

我已經嘗試使用getCanonicalPath和FileSystemView,但我總是得到相同的路徑。

+0

爲什麼你需要'/ Volumes/Macintosh HD'? –

+0

@ThomasMueller因爲我需要知道文件的大小。 – Ivan

回答

0

(我只需要在卷文件夾中的「/」的別名的真實名稱的文件夾:

... 
// 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);      
     }      
} 
...  
1

查看Aliases.h文件。具體而言,您需要查看功能FSIsAliasFile()FSResolveAlias功能系列,可能爲FSResolveAlias()FSResolveAliasFile()

我還沒有嘗試過這個,但它看起來像應該給你的東西。

0

我認爲沒有辦法用純Java獲得這條路徑。你將不得不編寫一個本地共享對象。

馬爺有最後我沒有使用運行時它的一些imporvements與Java-7和FileSystem

相關問題