2011-08-10 12 views
7

संशोधित करने से रोका नहीं गया है, मुझे कुछ पैटर्न का पता लगाने के लिए लगातार एक लॉग फ़ाइल पढ़ने की आवश्यकता है। फ़ाइल ऑपरेशंस के साथ हस्तक्षेप किए बिना ऐसा कैसे कर सकता है कि लॉग लेखक ऑपरेशन को करने की आवश्यकता है?इस तरह से एक फ़ाइल पढ़ें कि अन्य प्रक्रियाओं को

लॉग लिखने के अलावा लॉग लेखक प्रक्रिया, समय-समय पर फ़ाइल को दूसरे स्थान पर ले जाती है (एक यह निश्चित आकार तक पहुंच जाती है)।

जिस तरह से मैंने फ़ाइल पढ़ी है, लॉग लेखक ऐप फ़ाइल को स्थानांतरित करने में विफल रहता है। मैंने बिना किसी लाभ के विभिन्न फाइलशेयर विकल्पों के साथ खेला।

यहाँ मेरी कोड के संस्करण सरलीकृत है:

using (FileStream stream = new FileStream(@"C:\temp\in.txt", FileMode.Open, FileAccess.Read, FileShare.Delete)) 
     { 
      TextReader tr = new StreamReader(stream); 
      while (true) 
      { 

       Console.WriteLine(".. " + tr.ReadLine()); 
       Thread.Sleep(1000); 
      } 

     } 
+0

"लॉग लेखक ऐप फ़ाइल को स्थानांतरित करने में विफल रहता है" - आप एक पाठक को उस फ़ाइल पर खोलना चाहते हैं जो स्थानांतरित हो रहा है? –

+0

मैं तब तक पढ़ना चाहता हूं जब तक फ़ाइल उपलब्ध न हो। लॉगिंग ऐप फ़ाइल को कब/कैसे चलाता है, इस पर मेरा कोई नियंत्रण नहीं है। आदर्श रूप में, फ़ाइल को स्थानांतरित होने पर मुझे अपवाद मिलेगा और मैं उस बिंदु से नई लॉग फ़ाइल पढ़ना शुरू कर दूंगा। – akirekadu

उत्तर

3

FileShare.ReadWrite | FileShare.Delete आज़माएं।

लेकिन अगर फ़ाइल हटा दी गई है (स्थानांतरित) तो मुझे लगता है कि आपकी पढ़ाई विफल हो जाएगी।

+0

धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। – akirekadu

3

आप फ़ाइल को खोलने के लिए हर समय रख रहे हैं, न केवल जब वहाँ पढ़ने के लिए परिवर्तन कर रहे हैं।

मुझे लगता है कि बदलाव के लिए फ़ाइल की निगरानी करने के लिए FileSystemWatcher का उपयोग करने के लिए एक बेहतर तरीका होगा और फिर नए डेटा में बदलकर फ़ाइल को खोलने के बाद फ़ाइल खोलें। अगर फ़ाइल केवल इसमें संलग्न है, तो आप ट्रैक कर सकते हैं कि आपने फ़ाइल को कितनी देर तक संसाधित किया है और फ़ाइल खोलने पर तत्काल उस स्थिति की तलाश कर सकते हैं।

+0

यदि यह एक मामूली (या भारी) उपयोग की गई लॉग फ़ाइल है (जो मुझे संदेह है कि यह हो सकता है) तो यह लगातार ट्रिगर होगा। मान लें कि यह फ़ाइल 1000 लाइनों/सेकंड पर लिखी जा रही है ... – Joe

+0

@anders फिर उसे एक ही समस्या है जो शायद एक लेखक पाठक को पढ़ने पर उस फ़ाइल को स्थानांतरित करना चाहता है। – Skomski

+0

जो ने उल्लेख किया है, यह एक लॉग फ़ाइल है, लगातार अद्यतन हो जाता है। – akirekadu

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