मैं एक तृतीय पक्ष जेपीईजी/EXIF मैनिपुलेशन लाइब्रेरी (Mediautil) के साथ काम कर रहा हूं जो मुझे कुछ सिरदर्द पैदा कर रहा है। मैं एक छवि के EXIF डेटा को बदलना चाहता हूं। ऐसा करने के लिए, मुझे अद्यतन संस्करण को अस्थायी फ़ाइल में लिखना होगा, मूल को हटाएं और फिर मूल नाम पर temp फ़ाइल का नाम बदलें। लेकिन मैं यह सब धाराओं को बंद करने के लिए सब कुछ मैं एपीआई में पा सकते हैं किया है -File.delete() को झूठा लौटने/अनजान धाराओं का पता लगाने का निदान कैसे करें?
मेरे समस्या शायद क्योंकि पुस्तकालय अभी भी यह किसी तरह से खोल दिया है कि File.delete()
कॉल के विफल होने और false
देता है,। इससे भी बदतर: समस्या समय-निर्भर होने लगती है, और यूनिट परीक्षण जहां कभी-कभी असफल होता है और कभी-कभी नहीं होता - लेकिन कोड बहुप्रचारित नहीं है।
विचित्र रूप से, एक पुस्तकालय कॉल है जो समस्या को हटा देता है - लेकिन यह EXIF थंबनेल को भी हटा देता है, जिसे मैं वास्तव में नहीं चाहता हूं। और कोड को देखते हुए, मैं बिल्कुल नहीं देख सकता कि यह किसी भी धारा को बंद करता है जो अन्यथा खुला रहता है।
कोई भी विचार इस समस्या पर हमला कैसे करें?
संपादित करें: यह Windows XP, जावा 6. और एक और बात पर है: मुझे पता चला है कि अगर मैं File.delete()
कॉल करने से पहले System.gc()
कहते हैं, यह काम करता है - शायद क्योंकि है कि कुछ finalizer से चलाता है। तो यह निश्चित रूप से एक संलग्न धारा प्रतीत होता है।
आपको किसी एंटीवायरस मशीन पर चल रहा है? कभी-कभी एवी आपके द्वारा लिखे जाने के बाद फ़ाइल को अस्थायी रूप से खोल सकता है, जिसके कारण आप स्पोरैडिक व्यवहार का उल्लेख करते हैं, जहां आप कभी भी "दुर्भाग्यपूर्ण" होते हैं, जब आप इसे हटाने का प्रयास करते हैं। –
किस मंच पर? –
@Neil अच्छा विचार है, लेकिन एवी बंद करने से कोई फर्क नहीं पड़ता। –