दिलचस्प पोस्ट
विजुअल स्टूडियो में बनाया विंडोज सर्विस स्थापित करें जीसीएम के लिए एपीआई कुंजी अचानक अमान्य है? अनधिकृत (401) त्रुटि अनक्यूट टाइप एरर: नल का गुण 'मान' पढ़ा नहीं जा सकता एचटीएमएल फॉर्म अपलोड में फ़िल्टर एक्सटेंशन JQuery का उपयोग करके एक <input type = "text"> (तुरंत) में सभी परिवर्तन खोजें एंड्रॉइड में वीडियो पर वॉटरमार्क बिटमैप जोड़ना: 4.3 मीडियामॉक्सर या एफएफपीएपी JqGrid फॉर्म के साथ बूटस्ट्रैप select2 का उपयोग करना Angular2 नेस्टेड टेम्पलेट संचालित प्रपत्र एक सीएसएस चौड़ाई में दशमलव स्थानों का सम्मान किया जाता है? jQuery आईडी से शुरू होता है मैं एक iPhone एप्लिकेशन को Xcode से वास्तविक iPhone डिवाइस पर कैसे लागू कर सकता हूं? जावास्क्रिप्ट स्ट्रिंग – UTF-16 vs UCS-2? सामान्य कार्यों पर गोलंग में 'ठीक' जैसे नक्शे पर लौटें एक प्रभावी और आसान तरीके से पदानुक्रम, अभिभावक / बाल संबंध प्राप्त करना "एन्ट्रापी और सूचना लाभ" क्या है?

किसी अन्य प्रक्रिया द्वारा उपयोग की जाने वाली एक फ़ाइल को पढ़ना

मैं एक पाठ फ़ाइल की निगरानी कर रहा हूं जो किसी सर्वर प्रोग्राम द्वारा लिखी जा रही है। जब भी फ़ाइल बदल जाती है, तो सामग्री को मेरे प्रोग्राम में एक विंडो में आउटपुट किया जाएगा।

समस्या यह है कि मैं फ़ाइल पर Streamreader उपयोग नहीं कर सकता क्योंकि इसका used by another process जा रहा used by another process ReadWrite साथ एक Filestream सेट करना कोई अच्छा काम नहीं करेगा क्योंकि मैं फ़ाइल का उपयोग कर रहा है उस प्रक्रिया को नियंत्रित नहीं कर सकता

मैं नोटपैड में फ़ाइल खोल सकता हूँ सर्वर इसका उपयोग कर रहा है, भले ही इसे एक्सेस करना संभव हो।

क्या इस के चारों ओर एक अच्छा तरीका है?

क्या मुझे निम्नलिखित करना चाहिए?

  1. फ़ाइल की निगरानी करें
  2. जब इसे बदलता है तो उसे एक अस्थायी प्रतिलिपि बनाएँ
  3. अस्थायी प्रतिलिपि पढ़ें
  4. अस्थायी कॉपी हटाएं

जब भी सर्वर इसे बदलता है, तब मुझे फ़ाइल में टेक्स्ट प्राप्त करना होगा

Solutions Collecting From Web of "किसी अन्य प्रक्रिया द्वारा उपयोग की जाने वाली एक फ़ाइल को पढ़ना"

अगर नोटपैड फाइल को पढ़ सकता है तो आप भी कर सकते हैं, स्पष्ट रूप से इस कार्यक्रम ने फ़ाइल पर कोई पठन लॉक नहीं रखा। आपके द्वारा चल रहे समस्या यह है कि स्ट्रीमरिडर फ़ाइल को फ़ाइलशेयर के साथ खुल जाएगा। पढ़ें। जो लिखने का उपयोग करने से इनकार करते हैं वह काम नहीं कर सकता है, दूसरे प्रोग्राम ने पहले से ही लिखने की अनुमति प्राप्त की है।

आपको इस तरह StreamReader बनाने की आवश्यकता होगी:

 using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var sr = new StreamReader(fs, Encoding.Default)) { // read the stream //... } 

यहाँ एन्कोडिंग पर अनुमान लगा रहा है। आपको इस प्रकार के कोड से सावधान रहना होगा, अन्य प्रोग्राम सक्रिय रूप से फाइल को लिख रहा है। आपको एक बहुत ही विश्वसनीय अंत के फाइल संकेत नहीं मिलेगा, आंशिक अंतिम पंक्ति प्राप्त करना काफी संभव है। विशेष रूप से परेशानी में जब आप फ़ाइल को पढ़ते रहें, तो जो भी प्रोग्राम जोड़ा जाएगा।

कॉल

 File.Open(path, FileMode.Read, FileAccess.Read, FileShare.ReadWrite) 

यह तब तक काम करना चाहिए जब तक कि अन्य एप्लिकेशन ने फ़ाइल को विशेष रूप से लॉक नहीं किया हो।