2011-09-20 17 views
7

Cấu trúc tệp của tôi có liên kết tượng trưng đến thư mục/home/me/myDir ->/some/other/dir. Liên kết này được cập nhật bởi một quy trình khác và thông báo cho quá trình của tôi. Sau khi thông báo tôi cố gắng để có được những con đường mới kinh điển:đường dẫn tệp chuẩn trong java - vấn đề tối ưu hóa?

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

}

Vấn đề là sau khi liên kết được thay đổi (một tôi đã xác minh nó thay đổi) nó được dùng 3-5 lần gọi phương thức getPath() ở trên để thực sự có được đường dẫn mới trước khi đường dẫn trước đó được trả về. Điều duy nhất tôi có thể nghĩ là java có thể đang tối ưu hóa phương thức này và trả về đường dẫn cũ. Bất kỳ ý tưởng hay thông tin chi tiết nào đều được đánh giá cao.

Trả lời

12

Thử tắt bộ nhớ cache chuẩn hóa của Java. Điều này có thể được thực hiện bằng cách đặt thuộc tính hệ thống sun.io.useCanonCachessun.io.useCanonPrefixCache thành sai.

Theo mặc định, tên tệp chuẩn được lưu trong bộ nhớ cache trong 30 giây (đọc từ nguồn here).

+0

hoàn hảo! cảm ơn! – brad12s

Các vấn đề liên quan