दिलचस्प पोस्ट
चेतावनी: push.default अनसेट है; इसका निहित मूल्य गीट 2.0 में बदल रहा है जेसन सीरियललाइजेशन से संपत्ति को बाहर कैसे करें एक इनपुटस्ट्रीम के रूप में फ़ाइल को लोड करने के विभिन्न तरीकों कैसे जेड टेम्पलेट फ़ाइल से एक स्क्रिप्ट फाइल में चर पारित करने के लिए? क्या मैं जीडीबी में 'मेमोरी एक्सेस' पर ब्रेकपॉइंट सेट कर सकता हूं? क्या grep केवल शब्द खोज पैटर्न से मेल खाते हैं? डिवी के अंदर की सीमा रखते हुए और इसके किनारे पर नहीं iPhone SDK CGAffineTransform एक ऑब्जेक्ट के रोटेशन के कोण को प्राप्त करना आईपैड एसडीके में मैपकिट में एक मार्ग को आकर्षित करना अतुल्यकालिक बनाम तुल्यकालिक निष्पादन, इसका वास्तव में क्या अर्थ है? मैं PHP 5.2.8 में दो दिनांकित वस्तुओं की तुलना कैसे करूं? एसक्यूएल रैंक () बनाम ROW_NUMBER () npm sudo बिना त्रुटि फेंकता दृश्य स्टूडियो में डिफ़ॉल्ट रूप से प्रोजेक्ट से सुरक्षित चेतावनियां निकालें (_CRT_SECURE_NO_WARNINGS) त्रुटियों को मैन्युअल रूप से लॉग करने के लिए ELMAH का उपयोग कैसे करें

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

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

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

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

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

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

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

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

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

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

आपको इस तरह 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) 

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