2009-11-05 17 views
28

मुझे एक निर्देशिका स्थान मिला है, मैं सभी निर्देशिका कैसे बना सकता हूं? जैसे सी: \ मैच \ अपलोड दोनों मैच और उप-निर्देशिका दोनों अपलोड करेगा यदि यह अस्तित्व में नहीं है।निर्देशिका बनाएँ + उप निर्देशिका

का प्रयोग सी # 3.0

धन्यवाद

उत्तर

56

Directory.CreateDirectory (@ "C: \ मैच \ अपलोड") आप के लिए यह सब सुलझा होगा। आपको सभी उपनिर्देशिकाएं बनाने की आवश्यकता नहीं है! निर्माण निर्देशिका विधि आपके लिए सभी निर्देशिकाएं और उप निर्देशिका बनाता है।

+0

संदर्भ https://msdn.microsoft.com/en-us/library/system.io.directory.createdirectory.aspx –

8
if (!System.IO.Directory.Exists(@"C:\Match\Upload")) 
{ 
    System.IO.Directory.CreateDirectory(@"C:\Match\Upload"); 
} 
+1

निर्देशिका हो सकता है उस विधि के साथ निर्माण प्रयास के दौरान मौजूद नहीं है लेकिन अभी भी मौजूद है। अस्तित्व से परेशान न हों और इसके बजाय कैच का उपयोग करें। –

+7

वास्तव में CreateDirectory को कॉल करना विफल नहीं होगा, भले ही निर्देशिका मौजूद है, इसलिए इसका उपयोग करना अनावश्यक है। – RichardOD

1
Googler के लिए

: शुद्ध Win32 में/C++, का उपयोग SHCreateDirectoryEx

inline void EnsureDirExists(const std::wstring& fullDirPath) 
{ 
    HWND hwnd = NULL; 
    const SECURITY_ATTRIBUTES *psa = NULL; 
    int retval = SHCreateDirectoryEx(hwnd, fullDirPath.c_str(), psa); 
    if (retval == ERROR_SUCCESS || retval == ERROR_FILE_EXISTS || retval == ERROR_ALREADY_EXISTS) 
     return; //success 

    throw boost::str(boost::wformat(L"Error accessing directory path: %1%; win32 error code: %2%") 
     % fullDirPath 
     % boost::lexical_cast<std::wstring>(retval)); 

    //TODO *djg* must do error handling here, this can fail for permissions and that sort of thing 
} 
+0

केवल विंडोज एक्सपी और 2003, दस्तावेज – MikMik

+0

कहते हैं कि लड़के ने सी # के बारे में पूछा, लेकिन यह वही है जो मैं देख रहा हूं :-) –

+1

जब से शुद्ध शुद्ध Win32 है – Kobor42

0

यहाँ एक DirectoryInfo उद्देश्य यह है कि निर्देशिका का निर्माण करेगा और सभी सबडायरेक्टरियों साथ एक उदाहरण है:

var path = @"C:\Foo\Bar"; 
new System.IO.DirectoryInfo(path).Create(); 

कॉलिंग यदि पथ पहले से मौजूद है तो Create() त्रुटि नहीं होगी।

यदि यह एक फ़ाइल पथ है आप कर सकते हैं:

var path = @"C:\Foo\Bar\jazzhands.txt"; 
new System.IO.FileInfo(path).Directory.Create(); 
संबंधित मुद्दे