C++;:如何检查文件/目录是否可读?(PHP等价物:可读) 我试图用C++来验证一个目录。
bool是可读的(字符串$filename)C++;:如何检查文件/目录是否可读?(PHP等价物:可读) 我试图用C++来验证一个目录。,c++,linux,boost,filesystems,C++,Linux,Boost,Filesystems,bool是可读的(字符串$filename) 说明文件(或directroy)是否存在且可读。 在C++中,上述等价物是什么? 我已经在使用boost/filesystem库检查目录是否存在。 我已经检查了文档: 但是我找不到PHP的等价物is_readable() 如果boost/文件系统库无法实现,您会使用什么方法?大多数操作系统都提供stat() 因为您已经将问题标记为“Linux”,所以有一个POSIX函数来检查当前进程的用户是否可以读取/写入/执行文件。请参见man 2访问 int
说明文件(或directroy)是否存在且可读。 <>在C++中,上述等价物是什么? 我已经在使用boost/filesystem库检查目录是否存在。 我已经检查了文档:
但是我找不到PHP的等价物is_readable()
如果boost/文件系统库无法实现,您会使用什么方法?大多数操作系统都提供stat()
man 2访问
int access(const char *pathname, int mode);
比如说,
if (-1 == access("/file", R_OK))
{
perror("/file is not readable");
}
std::ifstream
)。如果成功,则文件可读。同样,对于目录,请使用boost::filesystem::directory\u迭代器
,如果成功,则目录是可读的谢谢一个快速跟进问题:我没有安装相关的手册页(“第2节中没有手动输入访问”)。你知道要在Debian/Kubuntu上安装的包名吗?不管怎样,正确的方法是2号,如果access返回成功,你不能保证当你开始读取时它仍然可读it@jk是的,如果您稍后尝试打开它,则始终可能存在TOCTOU race条件,但它适用于一次性报告目的是的,在这种情况下,我实际上不想读取任何内容,而是在保存设置之前检查目录是否可读。