2009-03-09 18 views
19

कई बार हम कोई त्रुटि मिलती अन्य प्रक्रिया द्वारा उपयोग किया जाता है, जबकि विंडोज प्लेटफॉर्म पर फ़ाइल लिखने की कोशिश कर,फ़ाइल,

"प्रक्रिया है क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है फ़ाइल 'XXX' का उपयोग नहीं कर सकते हैं।"

फ़ाइल में लिखने से पहले सी # में कैसे जांचें, इसका उपयोग किसी अन्य प्रक्रिया द्वारा नहीं किया जा रहा है?

उत्तर

13

आप नहीं, मूल रूप से कर सकते हैं - आप लेखन के लिए फ़ाइल को खोलने का प्रयास करने के लिए है, और आप एक मिलता है अपवाद आप इसे नहीं लिख सकते :(

भले ही आप पहले एक अलग जांच कर सकें, परिणाम लिखने से पहले परिणाम समाप्त हो जाएगा - आप अभी भी अपवाद के साथ समाप्त हो सकते हैं।

यह अच्छा होगा अगर ढांचा एक TryOpen विधि, बेशक ...

+0

+1 मैं अपने हर रात को बैचों में इसका इस्तेमाल करते हैं और यह काम करता है सुंदर नहीं है, लेकिन काम करता है। – systempuntoout

7

यहां एकमात्र विकल्प उत्पन्न अपवाद को पकड़ने और इसे उचित तरीके से संभालने के लिए है। पूर्ण विचार विमर्श के लिए इन अन्य दो अतः धागे देखें:

1

एक कोशिश पकड़ बयान में खुला आदेश डालकर प्रदान की जाएगी। अगर फ़ाइल का उपयोग किया जा रहा है IOException फेंक दिया जाएगा।

2

आपको बस साझा करने वाली पहुंच के साथ खुले प्रयास करना होगा, और जो फेंक दिया गया है उसे संभालें।

नोट: कभी-कभी फ़ाइल केवल इसलिए नहीं खुलती है क्योंकि आपके द्वारा निर्दिष्ट फ़ाइल साझाकरण अधिकार फ़ाइल साझाकरण अधिकारों के साथ संघर्ष करते हैं जिन्हें किसी ने फ़ाइल को पहले ही खोला है।

Please see my answer here for more information

0

अगर आप नाम बदलने में सक्षम हैं तो फ़ाइल का नाम बदलने का प्रयास करें, तो यह पुष्टि है कि कोई अन्य प्रक्रिया उस फ़ाइल तक पहुंच नहीं रही है। अंत में सुनिश्चित करें कि आपने उसी फ़ोल्डर में उसी फ़ाइल में नाम बदल दिया है।

6

आप चाहिए अपने कोड पर उपयोग करने के बाद अपनी फ़ाइल close रहे हैं:

FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened 
//you use the file here 
file.Close(); //then you must to close the file 
+1

मेरी समस्या हल हो गई। इसे बंद करने के लिए भूल गए। '(...) {...}' के उपयोग के शीर्ष पर रखा गया और जाने के लिए अच्छा है – Jcorretjer