2010-03-05 17 views
6

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

FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read); 

गु समस्या यह है कि दूसरे मॉड्यूल निम्नलिखित कोड का उपयोग कर एक ही फ़ाइल को खोलने का प्रयास करते समय विफल रहता है:

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read); 

क्या मुझे यहां कुछ अतिरिक्त सुरक्षा पैरामीटर सेट करने की आवश्यकता है?

उत्तर

22

FileStream कि केवल फ़ाइल पढ़ता है पर है आप के रूप में

FileShare.ReadWrite

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

अन्य यह निर्धारित करने की आवश्यकता बुद्धिमान मूल FileStream आगे पीछे शर्त इसकी सिर्फ एक वॉली इसे वापस लिखने के लिए ... में सक्षम नहीं होगा दो धाराएं बुनाई, सुनिश्चित करें कि आप अन्य जरूरतों को वापस रखें

+0

+1: ठीक है यह काम करता है लेकिन मुझे नहीं पता क्यों। क्या पहला फ़ाइलस्ट्रीम सहेजने में सक्षम होगा जबकि दूसरा खुल जाएगा? – A9S6

+0

एक त्वरित परीक्षण के साथ, मैं पहले लिखने में सक्षम था, फिर स्ट्रीम को बंद कर दिया, जबकि दूसरा खुला था और कैनरेड स्टेटस सच हो गया .... तो ऐसा लगता है, हाँ – curtisk

0

आपको filestreamname का उपयोग करने की आवश्यकता है। खोलें(); और filestreamname.close(); कमांड को पढ़ने/लिखने के लिए 2 फाइलस्ट्रीम का उपयोग करते समय आदेश दें, क्योंकि आप फ़ाइल को अतुल्यकालिक रूप से पढ़ और लिख नहीं सकते हैं।

+2

-1: पूरी तरह से गलत जानकारी। –

0

जब दूसरे FileStream खोलने, आप भी FileShare.Read निर्दिष्ट करने के लिए, अन्यथा यह अनन्य उपयोग के साथ इसे खोलने की कोशिश करेंगे, की जरूरत है, और असफल हो जायेगी क्योंकि फ़ाइल पहले से ही खुला

+0

कोशिश की लेकिन यह काम नहीं किया: फ़ाइलस्ट्रीम एफएस = नया फाइलस्ट्रीम (@ "डी: \ पोस्ट.एक्सएमएल", फाइलमोड। ओपन, फाइलएप. रीड, फाइलशेयर। पढ़ें); – A9S6

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