Windows,Linux文件夹相关操作

参考:

http://blog.csdn.net/tigerjibo/article/details/11712039

http://baike.baidu.com/subview/355/5900599.htm

http://blog.sina.com.cn/s/blog_5db869d00100h7hi.html

http://baike.baidu.com/view/1279338.htm

http://baike.baidu.com/view/1081230.htm

判断文件夹是否存在:

在windows环境下头文件为:

#include <io.h>  

在linux环境下头文件为:

 #include <unistd.h>  

下述函数在windows和linux环境下均可使用

int access(const char* _Filename, int _AccessMode)

该函数功能为确定文件或文件夹的访问权限,如果指定的访问权限有效,则函数返回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(const char* _Filename, int _AccessMode)  

创建新的文件夹:

windows环境下头文件为:

#include <direct.h>  

函数原型为:

 int mkdir(const char *_Path)

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

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

windows环境下也可用函数_mkdir:

 _mkdir(const char *_Path) 

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

Linux环境下头文件为:

#include <sys/types.h>  
#include <sys/stat.h>  

函数原型为:

    int mkdir(const char *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 <direct.h>  

linux环境下头文件:

#include <dirent.h>  

函数原型为:

  int rmdir(const char *_Path)  

函数功能是删除参数指定的文件夹,成功返回0,否则返回-1

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

    int main(void)  
    {  
        string dir="./hello";  
        if (access(dir.c_str(), 0) == -1)  
        {  
            cout<<dir<<" is not existing"<<endl;  
            cout<<"now make it"<<endl;  
    #ifdef WIN32  
            int flag=mkdir(dir.c_str());   
    #endif  
    #ifdef linux   
            int flag=mkdir(dir.c_str(), 0777);  
    #endif  
            if (flag == 0)  
            {  
                cout<<"make successfully"<<endl;  
            } else {  
                cout<<"make errorly"<<endl;  
            }  
        }  

        if (access(dir.c_str(), 0) == 0)  
        {  
            cout<<dir<<" exists"<<endl;  
            cout<<"now delete it"<<endl;  
            int flag=rmdir(dir.c_str());  
            if (flag == 0)  
            {  
                cout<<"delete it successfully"<<endl;  
            } else {  
                cout<<"delete it errorly"<<endl;  
            }  
        }  

        //cout<<"Hello World"<<endl;  

        cout<<"end..."<<endl;  
        cin.get();  
        return 0;  
    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值