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

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

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

不行也!
...全文
1029 18 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
一个个建
操作系统课程设计报告 题 目: 文件系统的模拟设计 一、设计目的 本课程设计是学习完"操作系统原理"课程后进行的一次全面的综合训练,通过课程 设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的 理解,加强学生的动手能力。 二、设计内容 (1)概述 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 (2)设计原理和系统总体功能框架图 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录 的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储 空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。 4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长 度等信息,还可以通过目录项实现对文件的读和写的保护。 5、对文件或目录的操作采用windows系统的API函数来实现。 6、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:用户 登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、复制文件、移动 文件、返回根目录、退出。 功能结构图如图1.0所示: (3)详细设计及少数重要编码的说明 这次课程设计中,我负责4个板块,分别是显示列表函数和目录、创建函数文件创 建函数、打开文件函数和关闭文件系统函数。 1. 显示列表函数和目录 流程图如图1.1所示 2. 文件创建函数 算法:查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容 ,以'###'结束。申请inode空间(ialloc函数),申请硬盘block空间(balloc函数), 申请失败则结束。将文件内容写入inode空间和block空间。修改当前目录的结构,修改 inode位图,block位图,写入模拟硬盘。详细过程如流程图1.2所示: 、打开文件函数 对文件进行关闭操作,若此时文件不存在或处于读状态或写状态,则返回关闭失败信 息;若此时文件处于空闲状态,则调用Close函数进行关闭操作。流程图如图1.3所示 : 、关闭文件系统函数 对文件进行打开操作,若此时文件不存在或已处于打开状态或读状态或写状态,则返回 打开失败信息;若此时文件处于空闲状态,则调用Open函数进行打开操作。流程图如图 1.4所示: (4)运行结果分析 程序结果如图1.5-1.7所示 图1.5 图1.6 图1.7 (5)设计小结 操作系统课程设计是本课程重要的实践教学环节。课程设计的目的,一方面使学生 更透彻地理解操作系统的基本概念和原理,使之由抽象到具体;另一方面,通过课程设 计加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能 力和创新精神。与本课程的实验教学相比,课程设计独立设课,具有更多的学时,给学 生更多自行设计、自主实验的机会,充分放手让学生真正培养学生的实践动手能力,全 面提高学生的综合素质。 对于本次操作系统课程设,由于Linux比较陌生,刚起步阶段花了很大时间去查阅各 种资料。当完成设计时,感觉掌握了以前学到的知识,并且还对操作系统应用有了更深 入的认识。对二级文件系统也有了很好的了解,熟练C语言布局的使用,如何解决实现里 面功能的各种问题。 (6)参考文献 [1]计算机操作系统(第3版),汤小丹,西安电子科技大学出版社,2007年7月 [2]C语言程序设计,孟庆昌,人民邮电出版社,2006年4月 [3]计算机操作系统教程(第3版)习题解答与实验指导,张尧学,清华大学出版社, 2006年11月 (7)附源代码 12、显示列表函数dir( )和目录创建函数mkdir( )等(文件名dir.c) #include "stdio.h" #include "string.h" #include "filesys.h" _dir( ) /*dir*/ { unsigned int di_mode; int i,j,one; struct inode *temp_inode; printf("\nCURRENT DIRECTORY:\n"); for(i=0;i
(本站课程停更)作者创意豪,开发有CMS,MVC框架,涉猎PHP,Java,Python,JavaScript,对编程颇感兴趣。 在创意豪看来,PHP相对于其他后端编程语言,具有快速高效开发的优势,在中小型企业快速开发自己的软件这方面,PHP无疑是最优的语言。 而Laravel是PHP中最受欢迎的框架,是最早引入Composer的管理方式,PHP的CLI命令行创建方式,也是最早将服务容器,服务提供者,门面,契约这些概念和设计思想,带入框架整体的使用和开发上。Laravel的出现,给PHP的生态发展增强了一些,同时也带动了其他框架的跟进发展。 因此,创意豪推出这个课程,可以让更多PHP开发者,了解和学习到Laravel的先进设计理念。 【简介和安装】Laravel的历史版本Laravel的优势本课程推荐的学习资料下载安装wampwamp新建本地域名的网站下载安装phpstusyphpstudy新建Laravel网站使用Composer国内镜像,下载和运行Laravel运行Laravel的方式 【架构思想】MVC模型图解实战:手写简单的MVC模型Laravel的请求生命周期服务容器的概念和图解依赖注入服务容器的创建和解析两种类型的服务提供者Facades:门面Contracts:契约 【简易CMS:开发CMS的备注模块,实战带动知识点】Laravel开发CMS的备注模块 - 简介下载Laravel和后台HTML模板使用phpstudy配置本地域名路由的方法路由的命名和中间件路由控制器视图生成和运行迁移,设置表字段回滚迁移和重建数据库通过迁移文件,后加字段模型准备备注模块所需的静态页面分拆页面结构CURD增删改查用Tinker新增用Factory新增用create方法新增用save方法新增读取用update方法更新用save方法更新用delete方法删除软删除 【简易CMS:开发CMS的登录登出模块,掌握权限认证】准备登录页面准备登录登出模块所需要的文件和数据表通过路由和代码方式生成后台用户通过tinker方式生成后台用户登录功能登出功能和更换图标整理左边菜单
文件管理系统 第一章 概 述 操作系统是配置在计算机硬件上的第一层软件,是对硬件的首次扩充,是最重要的计算机系统软件,同时也是最活跃的学科之一,其发展极为迅速。操作系统的主要任务,是为多道程序的运行提供良好的运行环境,以保障多道程序能有条不紊地、高效地运行,并能最大程度地提高系统中各种资源的利用率和方便用户的使用。为了实现上述的任务,操作系统应具有以下功能:处理机管理、存储器管理、设备管理、文件管理及用户接口等。通过设计和调试一个简单的文件系统,主要是模拟文件操作命令的执行,来模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。文件管理的主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。因此文件管理应具有对文件存储空间的管理、目录管理、文件的读写管理以及文件的共享与保护等功能。 第二章 系统分析 本设计的目的是通过设计和调试一个简单的文件管理系统,主要是模拟文件操作命令的执行,来模拟文件管理,掌握主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。 (1) 设计一个支持n个用户的文件系统,每个用户可拥有多个文件; (2) 采用二级或二级以上的多级文件目录管理; (3) 对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写等”; (4) 系统的外部特征应接近于真实系统,可设置下述文件操作命令:命 令 功 能 命 令 功 能 Create 建立文件 Read 读文件 Open 打开文件 Write 写文件 Close 关闭文件 Copy 复制文件 Delete 撤消文件 Directory 查询目录 (5) 通过键盘使用该文件系统,系统应显示操作命令的执行结果。 第三章 系统设计 在进入主函数之后,首先进入用户登陆界面,通过调用check()函数来对用户输入的密码进行验证,验证通过后,则进入文件管理的界面。进入文件管理的界面之后,系统则通过一个switch()语句来实现文件管理系统的各个功能的。 switch()语句如下:
delphi函数集 1. CustomCursor ................. 自定义光标 2. ReadRegKey ................... 读注册表键值 3. WriteRegKey .................. 写注册表键值 4. GetExePath ................... 取应用程序路径 5. GetParameter ................. 取配置文件参数 6. RebootExpires ................ 让重新启动失效 7. RebootRestore ................ 恢复重新启动功能 8. CloseExpires ................. 使窗口关闭功能失效 9. CloseRestore ................. 恢复窗口关闭功能 10. HideDesktop ................. 隐藏桌面图标 11. ShowDesktop ................. 显示桌面图标 12. ChangeWallPaper ............. 更改墙纸 13. myGetWindowsDirectory ....... 取Windows目录 14. myGetSystemDirectory ........ 取系统目录 15. myGetTempPath ............... 取临时路径 16. myGetLogicalDrives .......... 取逻辑驱动器 17. myGetUserName ............... 取用户名 18. myGetComputerName ........... 取计算机名 19. mySelectDirectory ........... 选择目录 20. myClearDocument ............. 清除开始菜单我的文档内容 21. SystemAbout ................. 调用系统关于对话框 22. SelectDir ................... 选择目录 23. HideFormOnTask .............. 在任务栏上隐藏窗口 24. ConvertBMPtoJPG ............. 转化BMP格式为JPG 25. ConvertJPGtoBMP ............. 转化JPG格式为BMP 26. Replacing ................... 替换某一字符串 27. SmallTOBig .................. 转化数字为大写中文(1 - 壹) 28. CreateShortCut .............. 建立快捷方式 29. myAddDocument ............... 增加文件到最近打开过的文档 30. GetFileIcon ................. 取得文件图标 31. GetCDROMNumber .............. 取CDROM序列号 32. SetCDAutoRun ................ 设置光驱是否自动运行 33. OpenCDROM ................... 打开光驱 34. CloseCDROM .................. 关闭光驱 35. GetDiskSizeAvail ............ 取磁盘所有字节数和剩余字节数 36. GetDiskSize ................. 取磁盘所有字节数和剩余字节数 37. SystemBarCall ............... 系统控制面板功能调用 38. GetUserNameAPI .............. 取用户名(API方式) 39. GetWindowsProductID ......... 取WINDOWS产品ID 40. HideTaskbar ................. 隐藏任务栏 41. ShowTaskbar ................. 显示任务栏 42. MakeTree .................... 获取目录树 43. CreateDsn ................... 建立DSN 44. CnToPY ...................... 转化中文为拼音首字母 45. AddIcoToIE .................. 增加应用程序图标到IE 46. SetVolume ................... 设置磁盘卷标 47. FormatFloppy ................ 格式化软盘 48. IsAudioCD ................... 判断光驱中是否为CD盘 49. PlayAudioCD ................. 播放CD盘 50. DiskInDrive ................. 判断驱动器是否就绪 51. CheckDriverType ............. 检查驱动器类型 52. IsFileInUse ................. 判断文件是否在使用 53. CopyDir ..................... 拷贝目录包含子目录 54. DeleteDir (No use) .......... 删除目录包含子目录 55. CreateTempFile .............. 建立临时文件 56. SearchFile .................. 寻找文件 57. GetProgramAssociation ....... 取得应用程序扩展 58. myGetFileTime ............... 取文件建立时间 59. SetFileDateTime ............. 设置文件时间 60. GetFileLastAccessTime ....... 取文件最后访问时间 61. CreateDirectory ............. 建立目录 62. ChangeDirectory ............. 改变目录 63. GetDirectory ................ 得到目录 64. SetCurrentDirectory ......... 设置当前目录 65. RenameDirOrFile ............. 更改目录或文件名 66. CreateMultiDir .............. 建立多级目录 67. DirExist .................... 判断目录是否存在 68. ChangeFileExtension ......... 更改文件扩展名 69. GetFileExtension ............ 取文件扩展名 70. FileCopy1 ................... 文件拷贝 71. FileCopy2 ................... 文件拷贝 72. FileCopy3 ................... 文件拷贝 73. SetFileAttribAPI ............ 设置文件属性(API方式) 74. SetFileAttrib ............... 设置文件属性 75. GetFilePath1 ................ 取得文件路径(有'\'结尾) 76. GetFilePath2 ................ 取得文件路径(没有'\'结尾) 77. CopyDelRenMovFile ........... 拷贝、删除、改名或移动文件 78. GetPortUsed ................. 得到已被使用串口列表 79. SetMediaAudioOff ............ 静音播放媒体文件 80. SetMediaAudioOn ............. 打开媒体播放文件声音 81. WaitExeFinish ............... 等待直到可执行文件执行完成

16,472

社区成员

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

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

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