2011-09-20 38 views
7

我的文件結構有一個到/ home/me/myDir目錄的符號鏈接 - >/some/other/dir。 此鏈接被另一個進程更新並通知我的進程。一旦通知我試圖獲得新的規範路徑:在Java中的規範文件路徑 - 優化問題?

public static String getPath() 
{ 
    File file = new File("/home/me/myDir"); 
    if(file.exists()) 
    { 
     try 
     { 
     String canonical = file.getCanonicalPath(); 
     return canonical; 
     } 
     catch ... 
    } 

}

的問題是,該鏈接更改後(一個我已經驗證了它的變化),它正在調用的3-5倍上面的getPath()方法用於在返回前一個路徑之前實際獲取新路徑。我唯一能想到的是java可能會優化這種方法並返回舊路徑。任何想法或見解都非常感謝。

回答

12

嘗試禁用Java的規範化緩存。這可以通過將系統屬性sun.io.useCanonCachessun.io.useCanonPrefixCache設置爲false來完成。

默認情況下,規範文件名被高速緩存30秒(從源here讀取)。

+0

完美!謝謝! – brad12s