2010-08-02 11 views
8

मेरे पास एक फ़ोल्डर है जिसमें निरंतर नई फाइलों को डंप किया जा रहा है। जावा में, फ़ाइल-सिस्टम में बदलावों का पता लगाने का सबसे अच्छा तरीका क्या है (यानी एक निर्दिष्ट फ़ोल्डर जिसमें फाइलें डंप हो रही हैं) और नई पहुंच वाली फ़ाइलों को एक कतार डेटा संरचना में जोड़ें ताकि मैं अनुक्रमिक रूप से प्रत्येक आने वाली फ़ाइल को संसाधित कर सकूं।जावा फाइल सिस्टम में परिवर्तन का पता लगाता है

मुझे फ़ाइल क्लास में सूचीफाइल() फ़ंक्शन के बारे में पता है लेकिन इसका उपयोग करके मैं केवल उन फ़ाइलों को प्राप्त कर सकता हूं जो समय के तुरंत उपलब्ध हैं। बेशक मैं लगातार फ़ोल्डर को मतदान कर सकता हूं और धागे का उपयोग कर फाइलों की सूची प्राप्त कर सकता हूं। लेकिन क्या यह सबसे अच्छा तरीका है या इसे पूरा करने का एक बेहतर तरीका है।

+0

अधिक सामान्य सवाल है, कि विशिष्ट निर्देशिका की आवश्यकता नहीं है: http://stackoverflow.com/questions/494869/file-changed-listener-in-java –

उत्तर

8

लगातार मतदान तरह से अब तक जावा में यह करने के लिए है प्रविष्टियों का।

JDK 7 करने के लिए एक विशिष्ट API होगा सिर्फ इस java.nio.file.WatchFile

+2

+1 WatchFile –

+2

के लिए आप JavaDoc से जुड़ा हुआ हो सकता था की instaed एक बेवकूफ गूगल खोज। – Sylar

+0

निरंतर मतदान एक बुरा विचार है। मैं JNotify का उपयोग करने की अनुशंसा करता हूं, जो फाइल सिस्टम अधिसूचनाओं में टैप करता है। – Arnelism

4

दुर्भाग्य से जेडीके 7 आने तक ऐसा करने का कोई मानक तरीका नहीं है। लेकिन इंटरनेट पर कुछ पुस्तकालय उपलब्ध हैं जो ऐसा करने के लिए विभिन्न ऑपरेटिंग सिस्टम के मूल कार्यों का उपयोग करते हैं।

पुस्तकालयों जो मैं पर ध्यान दिया है jPoller और jNotify हैं लेकिन अंत में मैं बस मतदान निर्देशिका जब मैं ऐसा करना पड़ा जो मेरे लिए दिलचस्प था समाप्त हो गया। हालांकि भी अक्सर पोल नहीं है, यह काफी एक भारी आपरेशन किया जा सकता है अगर निर्देशिका बहुत सारे शामिल हैं -

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