2011-09-20 72 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