- 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("\\");
以上。。








