階層化されたディレクトリの作成

  • デル株式会社

  • ディレクトリの作成をVCで行おうとすると、

    CreateDirectory();

    を使うと思うんだけど、1つのディレクトリだけ作成する場合は、
    これで良いんだけども、CreateDirectory()では、
    階層化されたディレクトリが作成できない。

    自作のメソッドで、パスの文字列見ながら、1階層ずつ作ってもいいけど、
    なんか面倒。
    んな時は、これ。

    BOOL MakeSureDirectoryPathExists( PCSTR DirPath );

    階層化されたディレクトリを一気に作ってくれる。

    こんな感じ。

    #include <imagehlp.h>
    #pragma comment(lib, "imagehlp.lib") // ←プロジェクトに設定しても良い。
    
    void CMFCApplication1Dlg::OnBnClickedButton1()
    {
        // TODO: ここにコントロール通知ハンドラー コードを追加します。
        CString strPath = _T("c:\\Test\\Test\\");
        
        // 階層化されたディレクトリを作成
        if( MakeSureDirectoryPathExists( strPath ) == FALSE )
        {
            // エラー処理
        }
        
        return;
    }
    


    注意点としては、文字列の最後にディレクトリ記号「 \ 」が無いと、
    意図した通りに作成してくれないので注意。

    パスの格納にCString使ってるなら、単純に下記でも良いかな。

    CString strPath = _T("c:\\Test\\Test");
    
    //有っても無くてもTrim
    strPath.TrimRight( _T("\\") );
    
    // ディレクトリ記号の追加
    strPath += _T("\\");
    
    

    以上。。

    関連記事

    ページ上部へ戻る