c# - File.ReadLines without locking it? -


मैं एक फाइलस्ट्रीम खोल सकता हूँ

  नया filestream (logfileName, FileMode.Open, FileAccess .Read, FileShare.ReadWrite);   

फ़ाइल को लॉक किए बिना।

मैं इसे फ़ाइल के साथ कर सकता हूँ। रीडलाइन (स्ट्रिंग पथ) ?

नहीं ... अगर आप परावर्तक के साथ देखते हैं तो आप देखेंगे कि अंत में फ़ाइल.रिडलाइन फाइलस्ट्रीम खोलें (पथ, फ़ाइल मैोड। खोलें, फ़ाइल पहुँच। पढ़ें, फ़ाइलशेयर। पढ़ें, 0x1000, फ़ाइल विकल्प। सिक्विक एसकन);

तो केवल-पढ़ने के लिए साझा करें। < P> (यह तकनीकी रूप से ऊपर उल्लिखित के रूप में FileStream के साथ एक StreamReader खुलता है)

मैं जोड़ दूँगा कि ऐसा लगता है कि यह एक बच्चे के खेलने के लिए इसे करने के लिए स्थिर विधि:

  सार्वजनिक स्थिर IEnumerable & lt; स्ट्रिंग & gt; (Var sr = नया StreamReader (fs, एन्कोडिंग.UTF8)) का उपयोग करते हुए (लीड लाइन) (स्ट्रिंग पथ) {(var fs = नया फ़ाइल स्ट्रीम (पथ, फ़ाइल मैोड। खोलें, फ़ाइल पहुँच। रीड, फायरशेयर। रीडव्राइट, 0x1000, फाइल ऑप्शन। {स्ट्रिंग रेखा; जबकि ((रेखा = sr.ReadLine ())! = नल () रिटर्न लाइन; }}   

यह एक IEnumerable & lt; स्ट्रिंग & gt; देता है (कुछ बेहतर है अगर फ़ाइल में कई हजार पंक्तियाँ हैं और आपको केवल एक समय में उन्हें एक को पार्स करने की आवश्यकता होती है )। यदि आपको एक सरणी की आवश्यकता है, तो उसे readLines ("myfile") के रूप में कॉल करें। ToArray () LINQ का उपयोग कर।

कृपया ध्यान रखें कि, तार्किक रूप से, अगर फ़ाइल "उसके पीछे" पीठ (विधि का) ", कैसे सब कुछ काम काफी अपरिभाषित है (यह शायद तकनीकी रूप से परिभाषित है, लेकिन परिभाषा शायद काफी लंबी और जटिल है)

Comments