今天在写代码时遇到对文件夹的创建删除操作,经过一番查找试验,筛选出两种方法,mark一下
方法一(通用)
#include<stdio.h>
#include <io.h>//_access的头文件
int fun(char*filepath)
{
int res;
//filepath为绝对路径
//如果文件夹不存在
if(_access(filepath,0)!=0)
//创建文件夹
res = mkdir(filepath);// 返回 0 表示创建成功,-1 表示失败
//remove(filename) 删除文件
else
res = 1;
return res;
}
int main()
{
int flag = fun("d:\\45");
if(flag==-1)
printf("创建失败\n");
else if(flag==0)
printf("创建成功\n");
else if(flag==1)
printf("文件已存在\n");
return 0;
}
详解 access
头文件:<io.h>
函数原型:int _access(const char *pathname, int mode);
参数:pathname 为文件路径或目录路径 mode 为访问权限(在不同系统中可能用不能的宏定义重新定义)
返回值:如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1.
备注:当pathname为文件时,_access函数判断文件是否存在,并判断文件是否可以用mode值指定的模式进行访问。当pathname为目录时,_access只判断指定目录是否存在,在Windows NT和Windows 2000中,所有的目录都只有读写权限。
mode的值和含义如下所示:
00——只检查文件是否存在
02——写权限
04——读权限
06——读写权限
方法二(一般在mfc中使用)
#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
void fun(char*path)
{
if (!PathIsDirectory(path))
::CreateDirectory(path, NULL);
DeleteFile(filename);删除文件
}
详解 CreateDirectory
CreateDirectory这个函数的作用是创建一个新的目录。如果底层文件系统支持文件和目录上的安全描述,该功能可将指定的安全描述到新的目录。
函数原型:
BOOL CreateDirectory(
LPCTSTR lpPathName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
参数:
pPathName:长指针,指向一个空结束的字符串,该字符串指定要创建的目录的路径。有一个默认的字符串大小限制为MAX_PATH字符的路径。此限制是关系到这个函数是如何解析路径。字符串的长度不超过MAX_PATH。
lpSecurityAttributes:忽略,一般设置为NULL。
返回值:
非零表示成功,零表示失败。若想获得更多的错误信息,调用GetLastError函数。
备注:
这个函数不是递归的。它可以在一个路径中创建唯一的最终目录。也就是说,如果父目录或中间目录不存在,该函数将失败并显示错误消息ERROR_PATH_NOT_FOUND。
在调用PathIsDirectory()函数时,需要包含以下头文件与库函数:
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")