C++:如何检查文件/目录是否可读? (PHP等效:is_readable)
问题描述:
我想用C++验证目录。C++:如何检查文件/目录是否可读? (PHP等效:is_readable)
http://php.net/manual/en/function.is-readable.php
布尔is_readable(字符串$文件名)
讲述了一个文件(或directroy)是否存在,是否是可读的。
在C++中会有什么等同于上述内容?
我已经在使用boost/filesystem库检查该目录是否存在。 我已经检查了文档:
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v3/doc/index.htm
但我无法找到PHP的is_readable()的等价物。
如果boost/filesystem库不可行,你会用什么方法?
答
-
既然你已经标记了这个问题:“Linux的”,有一个POSIX函数来检查文件是否可读/写/当前进程的用户执行。见
man 2 access
。int access(const char *pathname, int mode);
例如,
if (-1 == access("/file", R_OK)) { perror("/file is not readable"); }
或者,如果您需要的便携性,尝试实际打开文件进行读取(例如
std::ifstream
)。如果成功,该文件是可读的。同样,对于目录,使用boost::filesystem::directory_iterator
,如果成功,目录是可读的。
答
大多数操作系统提供stat()。
谢谢。一个快速跟进问题:我没有安装相关的手册页(“在第2部分中没有用于访问的手动输入”)。您是否知道要在Debian/Kubuntu上安装的软件包名称? – augustin 2010-08-25 06:36:28
@augustin,IIRC在{U,Ku} buntu它是'manpages-dev'。 – 2010-08-25 06:40:07
@AlexB,宾果!你是对的。再次感谢。 – augustin 2010-08-25 06:55:43