2011-09-20 14 views
7

मेरी फ़ाइल संरचना में निर्देशिका/घर/me/myDir ->/कुछ/अन्य/dir के लिए एक प्रतीकात्मक लिंक है। यह लिंक किसी अन्य प्रक्रिया द्वारा अपडेट किया गया है और मेरी प्रक्रिया को सूचित करता है।जावा में कैननिकल फ़ाइल पथ - अनुकूलन समस्या?

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

}

समस्या यह है कि के बाद लिंक बदल गया है (यह एक मैं सत्यापित किया है बदल जाता है) है यह बुलाने की 3-5 गुना ले जा रहा है: सूचनाओं के लिए मैं नई विहित पथ प्राप्त करने के लिए प्रयास पिछले पथ को वापस करने से पहले वास्तव में नया पथ प्राप्त करने के लिए getPath() विधि से ऊपर। केवल एक चीज जिसे मैं सोच सकता हूं वह यह है कि जावा इस विधि को अनुकूलित कर रहा है और पुराने पथ को वापस कर सकता है। किसी भी विचार या अंतर्दृष्टि की सराहना की जाती है।

उत्तर

12

जावा के कैनोलिकलाइजेशन कैश को अक्षम करने का प्रयास करें। यह सिस्टम गुण sun.io.useCanonCaches और sun.io.useCanonPrefixCache को गलत पर सेट करके किया जा सकता है।

डिफ़ॉल्ट रूप से, कैनोलिक फ़ाइल नाम 30 सेकंड के लिए कैश किए जाते हैं (स्रोत here से पढ़ें)।

+0

सही! धन्यवाद! – brad12s

संबंधित मुद्दे