java中的规范文件路径 - 优化问题?

时间:2011-09-20 01:46:53

标签: java optimization

我的文件结构有一个指向目录/ home / me / myDir的符号链接 - > /一些/其它/目录。 此链接由另一个进程更新,并通知我的进程。收到通知后,我试图获得新的规范路径:

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

}

问题是链接更改后(我已经验证它发生了变化),调用上面的getPath()方法需要花费3-5次才能在返回上一个路径之前实际获取新路径。我唯一能想到的是java可能正在优化这个方法并返回旧路径。非常感谢任何想法或见解。

1 个答案:

答案 0 :(得分:14)

尝试禁用Java的规范化缓存。这可以通过将系统属性sun.io.useCanonCachessun.io.useCanonPrefixCache设置为false来完成。

默认情况下,规范文件名缓存30秒(从源here读取)。