如何用CreateDirectory建立多级目录?!

magicist 2003-06-10 07:30:10
怎么用CreateDirectory建立多级目录?

string file = "c:\\aaaa\\bbbb\\cccc";
CreateDirectory(file.c_str(),NULL);

不行也!
...全文
1062 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
flmttm 2003-06-11
  • 打赏
  • 举报
回复
up关注:
magicist 2003-06-11
  • 打赏
  • 举报
回复
我查了一下,我的机器哩没这个库阿?
DebugHelp是做什么用的?
明明msdn上写的2000下有阿!我怎么没有呢?
magicist 2003-06-11
  • 打赏
  • 举报
回复
楼上的,谢谢!
但是它的头文件和LIb我怎么引用不了阿?
magicist 2003-06-11
  • 打赏
  • 举报
回复
而且如果是不作预处理,建不成把上级目录删除的话也很麻烦,如果我在某个线程处理,另一个线程向中间目录内部写入文件了,那往回删也不能成功了!!!

这些都应该想到,设计时必须想得全面些阿!:(
magicist 2003-06-11
  • 打赏
  • 举报
回复
to yevonn()

不是说一级极建不可以,但是很麻烦,因为建不成的话,至少还要一级 极把已经建过得目录删除,否则只建一半成何道理?!

或者做下预处理,看此字符串是否合法目录名(长度、特殊字符等),我就说麻烦么!
Runn 2003-06-11
  • 打赏
  • 举报
回复
BOOL MakeSureDirectoryPathExists(
LPSTR DirPath;
);
guoxiny 2003-06-11
  • 打赏
  • 举报
回复
//检查输入的目录是否存在,如不存在,则创建新目录
BOOL BuildDirectory(CString strPath)
{
CString strSubPath;
CString strInfo;
int nCount = 0;
int nIndex = 0;

//查找字符"\\"的个数
do
{
nIndex = strPath.Find("\\",nIndex) + 1;
nCount++;
}while( (nIndex-1) != -1);
nIndex = 0;
//检查,并创建目录
while( (nCount-1) >= 0)
{
nIndex = strPath.Find("\\",nIndex) + 1;
if( (nIndex - 1) == -1)
{
strSubPath = strPath;
}
else
strSubPath = strPath.Left(nIndex);
if(!PathFileExists(strSubPath))
{
if(!::CreateDirectory(strSubPath,NULL))
{
strInfo = "Build Directory";
strInfo += strSubPath;
strInfo += " Fail!";
AfxMessageBox(strInfo,MB_OK);
return FALSE;
}
}
nCount--;
};
return TRUE;
}
yevonn 2003-06-11
  • 打赏
  • 举报
回复
magicist(麦子心情):
那你说改怎么办?
magicist 2003-06-11
  • 打赏
  • 举报
回复
楼上的代码漏洞百出,举个简单例子,想没想到如果有一级目录创建失败如何?

你们都想的太简单了!

yevonn 2003-06-11
  • 打赏
  • 举报
回复

int index, start = 0;
CString strTmp;
CString strPath = "E:\\aaa\\bbb\\ccc\\ddd";

while ( (index = strPath.Find('\\', start)) != -1) {
strTmp = strPath.Left(index);

CreateDirectory(strTmp, NULL);

start = index + 1;
}

if ( strPath.GetLength() != strTmp.GetLength() + 1 )
CreateDirectory(strPath, NULL);
masterz 2003-06-10
  • 打赏
  • 举报
回复
there is an api for this purpose
The MakeSureDirectoryPathExists function creates all the directories in the specified DirPath, beginning with the root.


BOOL MakeSureDirectoryPathExists(
PCSTR DirPath
);

grey_whp 2003-06-10
  • 打赏
  • 举报
回复
递归建立,先建立最外层的,然后建立里面的
晨星 2003-06-10
  • 打赏
  • 举报
回复
system("md c:\\aaaa\\bbbb\\cccc");
dizzo 2003-06-10
  • 打赏
  • 举报
回复
从字符串里取目录很简单的吧,两个"\"之间的就是目录。

必须一级一级建,可以先判断一下目录是否存在,不存在就建一个。

magicist 2003-06-10
  • 打赏
  • 举报
回复
恩,判断这个字符串还不是大问题?
难不成为这个还要建个方法从字符串哩取目录?不用吧?
triggerd 2003-06-10
  • 打赏
  • 举报
回复
"这样问题可就大了"??
magicist 2003-06-10
  • 打赏
  • 举报
回复
楼上,一下建成不行吗?哪有一个个建得阿?根目录怎么找阿?这样问题可就大了!
ahao 2003-06-10
  • 打赏
  • 举报
回复
一个个建

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧