मैं एक प्रोग्राम लिख रहा हूं जो निर्देशिका देखता है और जब फाइलें इसमें बनाई जाती हैं, तो यह नाम बदलती है और उन्हें एक नई निर्देशिका में ले जाती है। मेरे पहले कार्यान्वयन में मैंने जावा की वॉच सर्विस एपीआई का इस्तेमाल किया जो 1kb फ़ाइलों का परीक्षण करते समय ठीक काम करता था। समस्या यह है कि वास्तव में बनाई गई फाइलें 50-300 एमबी से कहीं भी हैं। जब ऐसा हुआ तो वॉचर एपीआई तुरंत फाइल ढूंढ लेगा लेकिन इसे स्थानांतरित नहीं कर सका क्योंकि यह अभी भी लिखा जा रहा था। मैंने वॉचर को एक लूप में डालने का प्रयास किया (जिसने फ़ाइल को स्थानांतरित किए जाने तक अपवाद उत्पन्न किए) लेकिन यह बहुत अक्षम था।जावा: बड़ी फ़ाइलों को स्थानांतरित करने के लिए निर्देशिका देखना
चूंकि यह काम नहीं करता है, इसलिए मैंने एक टाइमर का उपयोग करने की कोशिश की जो प्रत्येक 10s फ़ोल्डर को चेक करता है और फिर जब यह कर सकता है तो फ़ाइलों को ले जाता है। यह वह तरीका है जिसके लिए मैं जा रहा हूं।
प्रश्न: क्या कोई संकेत है कि जब कोई अपवाद जांच किए बिना फ़ाइल को लिखा जा रहा है या लगातार आकार की तुलना किए बिना लिखा जा रहा है? मुझे एक टाइमर (और अपवादों में चलने) के बजाय लगातार प्रत्येक फ़ाइल के लिए वॉचर एपीआई का उपयोग करने का विचार पसंद है।
सभी प्रतिक्रियाओं की बहुत सराहना की जाती है!
nt
'मैंने वॉचर को एक लूप में डालने का प्रयास किया (जिसने फ़ाइल को स्थानांतरित किए जाने तक अपवाद उत्पन्न किए) लेकिन यह बहुत अक्षम था। हाँ, यह एक भयानक समाधान है। नियंत्रण प्रवाह के प्रबंधन के लिए अपवाद नहीं किए जाते हैं। –
दुख की बात है @ntmp, जो मैंने अभी तक परीक्षण किया है, अपवादों की तलाश करना यह बताने का सबसे अच्छा तरीका था कि ओएस अभी भी "लेखन" या "प्रतिलिपि" फ़ाइल था। लेकिन मैं @ सेन पैट्रिक फ़्लॉइड से सहमत हूं कि यह काम करने के लिए यह एक भयानक तरीका है। व्यक्तिगत रूप से मैं चाहता हूं कि चेक java.io.File API का हिस्सा था। यकीन नहीं है कि यह क्यों नहीं था। लागू करने के लिए जेवीएम लोगों को छोड़ दिया जाएगा और हमारे डेवलपर्स के लिए इसे आसान बना देगा .... –
"अपवाद के लिए जांच" दृष्टिकोण यूनिक्स पर भी काम नहीं करेगा, क्योंकि यूनिक्स फाइल सिस्टम लिखे गए फाइलों को लॉक नहीं करता है। यूनिक्स पर, जावा आंशिक रूप से आंशिक रूप से लिखित फ़ाइल को स्थानांतरित करेगा, जिसके परिणामस्वरूप दूषित डेटा होगा। – Raman