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

9

我的文件结构中有一个符号链接指向目录 /home/me/myDir -> /some/other/dir。这个链接会被另一个进程更新,然后通知我的进程。在收到通知后,我尝试获取新的规范路径:

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个回答

16
尝试禁用Java的规范化缓存。这可以通过将系统属性 sun.io.useCanonCachessun.io.useCanonPrefixCache 设置为 false 来完成。
默认情况下,规范文件名会被缓存30秒钟(从源代码此处读取)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接