【问题标题】:canonical file path in java - optimization problem?java中的规范文件路径-优化问题?
【发布时间】:2011-09-20 11:05:10
【问题描述】:

我的文件结构有一个指向目录 /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可能正在优化这个方法并返回旧路径。非常感谢任何想法或见解。

【问题讨论】:

    标签: java optimization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      相关资源
      最近更新 更多