windows linux文件夹是否存在,C/C++ 判断文件夹是否存在以及创建、删除文件夹 windows以及linux通用...

##########################################################

判断文件夹是否存在:

在windows环境下头文件为:

#include 

在linux环境下头文件为:

#include 

intaccess(constchar* _Filename,int_AccessMode) 上述函数在windows和linux环境下均可使用

该函数功能为确定文件或文件夹的访问权限,如果指定的访问权限有效,则函数返回0,否则返回-1

Filename可以是文件路径,也可以是文件夹路径,可以使用绝对路径或相对路径

_AccessMode表示要验证的文件访问权限,有可读、可写、可执行以及是否存在四种权限,当Filename表示文件夹时仅能查询文件夹是否存在

_AccessMode:

头文件unistd.h中有如下定义:

#define R_OK 4 /* Test for read permission. */

#define W_OK 2 /* Test for write permission. */

#define X_OK 1 /* Test for execute permission. */

#define F_OK 0 /* Test for existence. */

具体含义如下:

R_OK 只判断是否有读权限

W_OK 只判断是否有写权限

X_OK 判断是否有执行权限

F_OK 只判断是否存在

在宏定义里面分别对应:

00 只存在

02 写权限

04 读权限

06 读和写权限

_AccessMode=00表示只判断是否存在

_AccessMode=02表示文件是否可执行

_AccessMode=04表示文件是否可写

_AccessMode=06表示文件是否可读

在windows环境下还可使用函数_access:

int_access(constchar* _Filename,int_AccessMode)

###############

创建新的文件夹:

windows环境下头文件为:

#include 

函数原型为:

intmkdir(constchar*_Path) 该函数功能为建立一个新的目录,创建成功则返回0,否则返回-1

_Path:新建文件夹路径,可使用绝对路径,可也用相对路径

windows环境下也可用函数_mkdir:

_mkdir(constchar*_Path)

默认mode是0777,表示最大可能的访问权

Linux环境下头文件为:

#include 

#include 

函数原型为:

intmkdir(constchar*pathname, mode_t mode); 该函数功能为创建一个新的目录,并指定它的执行权限。如果创建成功则返回0,否则,返回-1

S_IRWXU

00700权限,代表该文件所有者拥有读,写和执行操作的权限

S_IRUSR(S_IREAD)

00400权限,代表该文件所有者拥有可读的权限

S_IWUSR(S_IWRITE)

00200权限,代表该文件所有者拥有可写的权限

S_IXUSR(S_IEXEC)

00100权限,代表该文件所有者拥有执行的权限

S_IRWXG

00070权限,代表该文件用户组拥有读,写和执行操作的权限

S_IRGRP

00040权限,代表该文件用户组拥有可读的权限

S_IWGRP

00020权限,代表该文件用户组拥有可写的权限

S_IXGRP

00010权限,代表该文件用户组拥有执行的权限

S_IRWXO

00007权限,代表其他用户拥有读,写和执行操作的权限

S_IROTH

00004权限,代表其他用户拥有可读的权限

S_IWOTH

00002权限,代表其他用户拥有可写的权限

S_IXOTH

00001权限,代表其他用户拥有执行的权限 可叠加使用,如0755表示S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH。表示该文件所有者拥有读,写和执行操作权限去,该文件用户组拥有可读,可执行的权限,其他用户拥有可读,可执行的权限。

#################################################

删除文件夹:

windows环境下头文件:

#include 

linux环境下头文件:

#include 

函数原型为:

intrmdir(constchar*_Path) 函数功能是删除参数指定的文件夹,成功返回0,否则返回-1

在windows环境下也可使用函数_rmdir

######################

实现程序:

intmain(void)

{

string dir="./hello";

if(access(dir.c_str(), 0) == -1)

{

cout<

cout<

#ifdef WIN32

intflag=mkdir(dir.c_str());

#endif

#ifdef linux

intflag=mkdir(dir.c_str(), 0777);

#endif

if(flag == 0)

{

cout<

} else{

cout<

}

}

if(access(dir.c_str(), 0) == 0)

{

cout<

cout<

intflag=rmdir(dir.c_str());

if(flag == 0)

{

cout<

} else{

cout<

}

}

//cout<

cout<

cin.get();

return0;

}

转自:http://blog.csdn.net/u012005313/article/details/50688257

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值