2009-09-07 24 views
29

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

(मेरे लिए पागल लगता है, मेरा मतलब है ReadAllText में पढ़ें बहुत स्पष्ट लगता है)

मैं जानता हूँ कि File.Open सभी घंटियाँ और सीटी के साथ है वहाँ है कि है, लेकिन वहाँ एक 'मध्यवर्ती' विधि है जो नहीं करता है 'है टी बफर और चार सरणी के साथ गड़बड़ाना शामिल है?

हाँ, मैं आलसी हूँ, इसलिए मुझे नीचे वोट, आप उपयोग में नहीं है कि एक फ़ाइल खोलने के लिए में फ़ाइल साझा झंडे निर्दिष्ट करने के लिए चाहते हैं, तो बस मुझे जवाब पहले :)

उत्तर

45

मुझे लगता है कि तुम सिर्फ निम्नलिखित हैं:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
using (var textReader = new StreamReader(fileStream)) 
{ 
    var content = textReader.ReadToEnd(); 
} 

FileAccess.Read पैरामीटर संकेत मिलता है कि आप केवल फ़ाइल पढ़ना चाहते हैं क्या महत्वपूर्ण है,। बेशक, ऐसा करने के लिए, फ़ाइल को Excel द्वारा में पढ़ा जाना चाहिए मोड (FileShare एनईएम में एनम देखें)। मैंने परीक्षण नहीं किया है, इसलिए मैं गारंटी नहीं दे सकता कि एक्सेल ऐसा करता है, हालांकि मैं उम्मीद करता हूं कि यह करता है।

+0

धन्यवाद, फ़ाइल से पूरी स्ट्रिंग प्राप्त करने के लिए {} के बीच मैं सबसे छोटी चीज़ क्या रख सकता हूं? (मैंने कहा था कि मैं आलसी था) – Benjol

+0

@ बेंजोल: कोई समस्या नहीं। सभी पाठ पढ़ने के लिए कोड के साथ अद्यतन किया गया। – Noldorin

+0

@ नोल्डोरिन, धन्यवाद। यह ग़ुम हुआ लिंक था। मैंने फाइलस्ट्रीम पर उपलब्ध सभी विधियों को देखा, समझ में नहीं आया। – Benjol

0

दे, तो आप ' फ़ाइल के साथ अटक गया। ओपन()।

+1

यह एक्सेल है जो फ़ाइल खोल रहा है, इसलिए ओपी इसे नियंत्रित नहीं कर सकता है। वह केवल उम्मीद कर सकता है कि एक्सेल इसे रीड-शेयर मोड में खोल देगा, और इसे केवल पढ़ने के लिए खोलें। – Noldorin

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

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