C ++:如何检查文件/目录是否可读? (PHP等价物:is_readable)

时间:2010-08-25 05:57:22

标签: c++ linux boost filesystems

我正在尝试使用C ++验证目录。

http://php.net/manual/en/function.is-readable.php

bool is_readable(string $ filename)
 判断文件(或directroy)是否存在且可读。

C ++中的上述内容是什么?

我已经在使用boost / filesystem库来检查目录是否存在。 我查了一下文件:
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v3/doc/index.htm
 但我找不到相应的PHP的is_readable()。

如果使用boost / filesystem库是不可能的,你会使用什么方法?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

  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,如果成功,则目录可读。