2010-09-28 9 views
8

मौजूद है मेरे ऐप्लिकेशन के config में मैं एक रास्ता है, उदाहरण के लिए "लॉग \ अपडेटर \ updater.log"एक पथ से एक फ़ाइल बनाएँ, उपनिर्देशिका बनाने यदि वे नहीं

एप्लिकेशन शुरू, मैं बनाने के लिए चाहते हैं फ़ाइल updater.log, सभी उपफोल्डर्स बनाते हैं यदि वे मौजूद नहीं हैं।

तो, अगर कल मेरा उपयोगकर्ता "लॉग \ mypathisbetter \ updater.log" में कॉन्फ़िगर में पथ बदलता है, तो मेरा ऐप काम करता रहता है, नई फ़ाइल में लॉग लिखता है।

File.Create, FileInfo.Create, Streamwriter.Create या तो: वे ऐसा करते हैं?

या क्या मुझे यह जांचने की ज़रूरत है कि फ़ोल्डर्स मौजूद हैं या नहीं?

मुझे नेट पर इस प्रश्न का स्पष्ट उत्तर नहीं मिल रहा है।

+0

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx – skst

उत्तर

13

कोड का एक छोटा सा का उपयोग कर हल:

private static void EnsureDirectoryExists(string filePath) 
{ 
    FileInfo fi = new FileInfo(filePath); 
    if (!fi.Directory.Exists) 
    { 
    System.IO.Directory.CreateDirectory(fi.DirectoryName); 
    } 
} 

यह वास्तव में नौसिखिया पद के लिए क्षमा करें ... आप सभी धन्यवाद! :-)

+0

आपकी दृष्टिकोण स्क्रिप्ट को संशोधित करने के लिए तैयार है –

9

नहीं, ऐसा प्रतीत नहीं होता - आपको एक निर्देशिका नॉटफाउंड अपवाद प्राप्त होगा, मैं तीनों से विश्वास करता हूं।

आपको पहले Directory.CreateDirectory(path) जैसे कुछ करने की आवश्यकता है।

संपादित:

एक पूर्ण समाधान है जो फ़ाइल नाम सहित एक पथ के साथ शुरू होता की एक थोड़ा और अधिक के लिए, कोशिश:

Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); 

    TextWriter writer = new StreamWriter(fullPath); 
    writer.WriteLine("hello mum"); 
    writer.Close(); 

लेकिन भालू मन में आप बहुत से निपटने के कुछ त्रुटि की आवश्यकता होगी, ताकि लेखक हमेशा बंद हो जाए ('अंत में' ब्लॉक में)।

+0

असल में, मैंने भी कोशिश की। उस काम को करने के लिए "सर्वश्रेष्ठ अभ्यास" है? कुछ विचार? :-) –

+0

मैंने अपना जवाब अपडेट किया, क्या वह मदद करता है? –

+0

कोड का एक छोटा सा का उपयोग कर हल: \t \t निजी स्थिर शून्य CreateFile (स्ट्रिंग FilePath) \t \t { \t \t \t FileInfo फाई = नए FileInfo (filepath); \t \t \t अगर \t \t \t { \t System.IO.Directory.CreateDirectory (fi.DirectoryName) (fi.Directory.Exists!); \t \t \t} \t \t} –

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