检测文件是否存在
这里的文件包含普通文件或者是目录文件,下面是CentOS 7环境下的测试.
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
int main()
{
int ret = access("../lesson01/file.txt", F_OK);
if (ret == 0)
{
std::cout << "存在" << std::endl;
}
else
{
std::cout << "不存在" << std::endl;
}
return 0;
}
[qkj@Qkj lesson01]$ ll
total 4
-rw-rw-r-- 1 qkj qkj 261 Aug 30 10:18 test.cc
[qkj@Qkj lesson01]$
[qkj@Qkj lesson01]$ g++ test.cc
[qkj@Qkj lesson01]$ ./a.out
不存在
[qkj@Qkj lesson01]$
说一下access
函数,这是一个检测文件是否存在的函数,我们这里只是简绍,详细的函数明细看man手册
- pathname: 文件名(注意带上路径,可以是绝对路径,也可以是相对的)
- mode : 直接设为
F_OK
,仅仅是为了检测文件是否存在
NAME
access - check real user's permissions for a file
SYNOPSIS
#include <unistd.h>
int access(const char *pathname, int mode);
创建目录
这里也说一下我们在CentOS 7环境下下如何创建目录.
NAME
mkdir - make a directory
SYNOPSIS
#include <sys/stat.h>
int mkdir(const char *path, mode_t mode);
参数解释
- path: 目录名,带路径
- mode:目录的权限,可以使用八进制
下面是代码演示
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
#include <string>
int main()
{
umask(2);
std::string str = "../lesson";
for (int i = 1; i < 27; i++)
{
std::string s = str;
if (i < 10)
s += '0';
s += std::to_string(i);
int ret = access(s.c_str(), F_OK);
if (ret == 0)
{
std::cout << s << " 存在" << std::endl;
}
else
{
mkdir(s.c_str(), 0777);
}
}
return 0;
}