我的文件结构有一个指向目录/home/me/myDir / -> /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可能会优化这个方法并返回旧路径。任何想法或见解都是非常受欢迎的。
发布于 2011-09-20 11:05:11
尝试禁用Java的规范化缓存。这可以通过将系统属性sun.io.useCanonCaches和sun.io.useCanonPrefixCache设置为false来完成。
默认情况下,规范文件名缓存30秒(从源here读取)。
https://stackoverflow.com/questions/7479198
复制相似问题