2009-11-05 11 views
28

ディレクトリの場所がありますが、どのようにすべてのディレクトリを作成できますか?例えばC:\ Match \ UploadはMatchとサブディレクトリUploadの両方を作成します(存在しない場合)。 C#3.0ディレクトリ+サブディレクトリの作成

を使用して

おかげ

答えて

56

Directory.CreateDirectory( "C:\マッチ\アップロード" @)があなたのためにこれすべてを整理します。すべてのサブディレクトリを作成する必要はありません!ディレクトリ作成メソッドは、すべてのディレクトリとサブディレクトリを作成します。

のGooglerのため
+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

ディレクトリかもしれませんifには存在しませんが、そのメソッドで作成しようとしている間はまだ存在しています。存在を気にしないで、代わりにキャッチを使用してください。 –

+7

実際にCreateDirectoryを呼び出すことは、ディレクトリが存在しても失敗しないので、それを使用することは冗長です。 – RichardOD

1

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

呼び出し:純粋な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

Windows XPと2003のみ、ドキュメント – MikMik

+0

男はC#について尋ねましたが、これは私が探しているものです:-) –

+1

いつブースト純win32 – Kobor42

0

を使用するには、ディレクトリとすべてのサブディレクトリを作成しますDirectoryInfo対象と例です。 Create()は、パスがすでに存在する場合はエラーになりません。

それはあなたが行うことができますファイルパスの場合:

var path = @"C:\Foo\Bar\jazzhands.txt"; 
new System.IO.FileInfo(path).Directory.Create();