Thursday 15 August 2013

Reading a log file in java which in currently being written -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 जवाब

    मेरे पास एक प्रोग्राम चल रहा है जो लिखते हैं कि एक फाइल में लॉग इन करें और मैं लाइन से इसे लाइन पढ़ना चाहता हूँ मैंने InputStream का उपयोग करने की कोशिश की, खासकर DataInputStream , इसकी उपलब्ध विधि का उपयोग करके लेकिन फिर इसमें readLine विधि नहीं है, इसे नापसंद किया गया है और इसे BufferedReader में readLine का उपयोग करने के लिए इसे लपेटने का सुझाव दिया गया है। लेकिन जब मैं BufferedReader का उपयोग करता हूं तो यह सभी पंक्तियों को नहीं पढ़ता है, यह किसी भी तरह से एक पंक्ति को पढ़ने से रोकता है।

      सार्वजनिक शून्य पढ़ें (DataInputStream ins) {try {while (सच) {if (ins.available () & gt; 0) {// BufferedReader रीडर = नया BufferedReader (नया InputStreamReader (INS)); //System.out.println (reader.readLine ()); Println (ins.readLine ()); } और {थ्रेड। नींद (200); }}} पकड़ (अपवाद ई) {e.printStackTrace (); }}   

    इसलिए, कोड ins.readLine () के साथ काम करता है, लेकिन इसे नापसंद किया गया है और जावा प्रलेखन के अनुसार यह BufferedReade आर। लेकिन reader.readLine () के साथ यह उम्मीद करता है कि यह काम नहीं कर रहा है।

    इसके अलावा, यह करने के लिए जो अन्य बेहतर जावा तरीका है, क्योंकि मुझे यकीन है कि यह कुछ मानक समस्या है। मैं ट्रेलर वर्ग के बारे में कहीं पढ़ता हूं। लेकिन यह परीक्षण करने में सक्षम नहीं है।

    से

    चाल एक java.io का उपयोग करना है RandomAccessFile, और समय-समय पर जांचें कि क्या फाइल की लंबाई अधिक है कि आपकी वर्तमान फ़ाइल स्थिति। यदि यह है, तो आप डेटा पढ़ा। जब आप लंबाई मारा, तो आप प्रतीक्षा करें धोने, कुल्ला, दोहराने।

    आप पारस्परिक बहिष्कार के साथ सौदा करने की आवश्यकता होगी (हालांकि केवल एक ही बात एक समय में पढ़ सकते हैं या आपके डेटा को भ्रष्ट किया जा सकता है)

    यदि आप एक बफ़रेड रीडर का उपयोग कर रहे हैं, तो यह एक समय में एक पंक्ति में पढ़ता है। यदि आप एक से अधिक में पढ़ना चाहते हैं, तो आप ऐसा लूप का उपयोग कर सकते हैं:

      BufferedReader br = नया BufferedReader (नया FileReader ("file.txt")); जबकि ((sCurrentLine = br.readline ()) = नल) {System.out.println (sCurrentLine); }   

    यह एक आईओएक्सेशन फ्इआई का कारण बन सकता है इसलिए इसे कोशिश / कैच में लपेटें या अपनी विधि को फेंक दें और इसके साथ सौदा करें।

    स्रोत:

No comments:

Post a Comment