首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

Windows上新建多级文件夹

2012-11-18 
Windows下新建多级文件夹使用system函数调用系统命令md注意:字符串变量的话赋时要使用双斜杠\\:system

Windows下新建多级文件夹

  1. 使用system函数调用系统命令"md"

注意:字符串变量的话赋值时要使用双斜杠"\\":

system("md C:\\newfolder\\");

如果需要动态新建目录的话:

char *path = "C:\\newfolder\\";

char swap[255];

sprintf(swap, "md %s", path);

system(swap);

不用判断返回值,系统会自动将错误信息打印到标准输出上.

 

  1. _mkdir()

#include <direct.h>

_mkdir("C:\\newfolder");//新建

_rmdir("C:\\newfolder");//删除

#include<io.h>

_access("C:\\newfolder");//判断文件夹是否存在

缺点是不能一下新建多层文件夹,可以裁剪字符串一级一级创建

如何新建多层目录:

//这里的const是对函数的使用者而言的,其实函数内部修改了该const字符串,但又还原了


  • CreateDirectory()

    该API也不能新建多层文件夹,而且要打印该函数的出错信息也很复杂.Windows这一套真真的让人恶心.思路是一样的,先一层一层判断文件夹是否存在,如果不存在就新建.判断文件夹是否存在使用GetFileAttributes()函数,如果函数返回-1,说明文件/文件夹不存在;否则如果返回的属性有FILE_ATTRIBUTE_DIRECTORY,说明文件夹已存在.


    关于FormatMessage函数,要多说一点关于Windows API错误(失败)信息的获取.看到网上说《Multitheading Applications inWin32(侯捷译)》书里讲述通过宏MTVERIFY就可以知道调用的Windows API函数错在什么地方:


    经过本人亲测,可用.那么上面的函数可以改为:


  • MakeSureDirectoryPathExists()

    这绝对是一个暴力的函数,啥都不说了,直接用:

    MTVERIFY(MakeSureDirectoryPathExists(path));

    别忘了加上两句:

    #include <ImageHlp.h>

    #pragma comment(lib, "ImageHlp.lib")

    加上一点:该函数强制要求参数字符串以反斜杠'\'结尾,如果不以'\'结尾,最后一层文件夹不会建立.

    1. 最后再说几个判断文件夹是否存在的方法
      1. PathFileExists() 可以判断文件或者文件夹是否存在:

    if (PathFileExists(path)) {...}

    1. MFC的CFileFind类

    使用CFileFind的成员函数FindFile(),FindNextFile()和IsDirectory().


    如果是非MFC应用程序,要加头文件afx.h和Windows.h(在VC6.0下顺序还不能反了,蛋疼),并设置工程为"Use MFC in a Shared DLL".编译通过.

     

    1. 和上面相似,使用Win32 API FindFirstFile()和FindNextFile()


    注: 上述处理的都是绝对路径(而且是以反斜杠结尾的绝对路径), 如果相对路径的话, 要稍作修改

    2楼wangqiulin123456昨天 22:40
    确实 学习了
    1楼leihengxin昨天 21:18
    非常好。

  • 热点排行