- 2013-7-16
- Visual C++
ディレクトリの作成を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("\\");
以上。。