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库不可行,你会用什么方法?

  1. 既然你已经标记了这个问题:“Linux的”,有一个POSIX函数来检查文件是否可读/写/当前进程的用户执行。见man 2 access

    int access(const char *pathname, int mode); 
    

    例如,

    if (-1 == access("/file", R_OK)) 
    { 
        perror("/file is not readable"); 
    } 
    
  2. 或者,如果您需要的便携性,尝试实际打开文件进行读取(例如std::ifstream)。如果成功,该文件是可读的。同样,对于目录,使用boost::filesystem::directory_iterator,如果成功,目录是可读的。

+0

谢谢。一个快速跟进问题:我没有安装相关的手册页(“在第2部分中没有用于访问的手动输入”)。您是否知道要在Debian/Kubuntu上安装的软件包名称? – augustin 2010-08-25 06:36:28

+2

@augustin,IIRC在{U,Ku} buntu它是'manpages-dev'。 – 2010-08-25 06:40:07

+0

@AlexB,宾果!你是对的。再次感谢。 – augustin 2010-08-25 06:55:43

大多数操作系统提供stat()。