2012-08-08 14 views
8

किसी एप्लिकेशन को निर्देशिका में फ़ाइल बनाने, निर्देशिका में कुछ करने की आवश्यकता है, और फिर फ़ाइल को हटाएं। उदाहरण के लिए, नीचे दिए गए स्रोत कोड:फ़ाइल को हटाने के बाद IOException

File.Create("textfile.txt"); 
// Do something here 
File.Delete("textfile.txt"); 

तो "कुछ" एक प्रक्रिया है कि केवल समय की एक बहुत ही कम राशि की जरूरत है, File.Delete IOException फेंक देते हैं (फ़ाइल अन्य प्रक्रिया द्वारा उपयोग किया जा रहा है)। एक और एसओ पोस्ट के मुताबिक: Cannot delete directory with Directory.Delete(path, true), थ्रेड कॉल करना। नींद (0) को पिछली प्रक्रिया को समाप्त करने की अनुमति देनी चाहिए। हालांकि,

File.Create("textfile.txt"); 
// Do something here 
Thread.Sleep(0); 
File.Delete("textfile.txt"); 

के साथ भी वही IOException अभी भी फेंक दिया गया है।

मुझे जो समाधान मिला वह एक समय-लूप है जो फ़ाइल को हटाए जाने तक बार-बार हटाने की कोशिश करता है। लेकिन मैं सोच रहा हूं कि क्या एक बेहतर समाधान है।

+1

बहुत तेज उत्तरों के लिए धन्यवाद (और यह एमएसडीएन पर इंगित करता है। मैं निश्चित रूप से अभी बहुत उज्ज्वल महसूस नहीं कर रहा हूं)। @usr के साथ जाने के लिए क्योंकि वह पहला है। लेकिन कृपया मेरे धन्यवाद के रूप में +1 स्वीकार करें। – Jim

उत्तर

16

File.Create आपको एक फ़ाइलस्ट्रीम देता है जो उस फ़ाइल के लिए एक खुले हैंडल का प्रतिनिधित्व करता है। निर्धारित कॉल को बंद करने के लिए उस कॉल के परिणाम को एक ब्लॉक-ब्लॉक में लपेटें।

21

File.Create विधि एक फ़ाइल-स्ट्रीम तैयार करेगी, जिसे आपको सही ढंग से निपटाने की आवश्यकता होगी।

using(FileStream fs = File.Create("textfile.txt")) 
{ 
    // Do something here. 
} 
File.Delete("textfile.txt"); 

ध्यान दें कि यह कोड बिल्कुल के रूप में MSDN दस्तावेज में सुझाव दिया है ...

3

File.Create एक FileStream जो कि फाइल करने के लिए एक खुला संभाल है देता है: मैं निम्नलिखित कोड सुझाव देते हैं। बजाय इस का उपयोग करें:

using(FileStream fs = File.Create("textfile.txt")) 
{} 

File.Delete("textfile.txt"); 
4

यह भी ध्यान रखें: यदि आप फ़ाइल में कुछ भी लिखने के लिए नहीं करना चाहते हैं, तो आप दो तरह से "का उपयोग" से बचने कर सकते हैं:

(1) File.WriteAllText("textfile.txt", string.Empty); 
(2) File.Create("textfile.txt").Dispose(); 

मामले में (2) यह उपयोग से बचने के लिए सुरक्षित है क्योंकि आप कुछ भी नहीं कर रहे हैं जो इसे बनाने और इसे निपटाने के बीच अपवाद फेंक सकता है।

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