PHP 扩展 - filestat

filestat 可以返回一系列系统的文件状态,如是否存在,文件或者目录,是否可读写等。

// 引入头文件
#include "ext/standard/php_filestat.h"

// 假设我们要检查的文件为 /tmp/foo.txt
zend_string *filename = zend_string_init("/tmp/foo.txt", sizeof("/tmp/foo.txt") - 1, 0);

int funcnum = FS_IS_DIR;  // 这里描述检查类型,FS_IS_DIR 是检查是否为文件夹,与 is_dir() PHP 方法相同
zval ret;  // FS_IS_DIR 返回的结果其实为一个布尔类型的 zval
php_stat(ZSTR_VAL(filename), (php_stat_len) ZSTR_LEN(filename), funcnum, &ret);

if (Z_TYPE(ret) == IS_TRUE) {
    // 目录
} else {
    // 不是目录
}

以下是 funcnum 宏值和 PHP 方法的对照,来自 php_filestat.h 的定义

#define FS_PERMS    0  // int fileperms(string filename)
#define FS_INODE    1  // int fileinode(string filename)
#define FS_SIZE     2  // int filesize(string filename)
#define FS_OWNER    3  // int fileowner(string filename)
#define FS_GROUP    4  // int filegroup(string filename)
#define FS_ATIME    5  // int fileatime(string filename)
#define FS_MTIME    6  // int filemtime(string filename)
#define FS_CTIME    7  // int filectime(string filename)
#define FS_TYPE     8  // string filetype(string filename)
#define FS_IS_W     9  // bool is_writable(string filename)
#define FS_IS_R    10  // bool is_readable(string filename)
#define FS_IS_X    11  // bool is_executable(string filename)
#define FS_IS_FILE 12  // bool is_file(string filename)
#define FS_IS_DIR  13  // bool is_dir(string filename)
#define FS_IS_LINK 14  // bool is_link(string filename)
#define FS_EXISTS  15  // bool file_exists(string filename)
#define FS_LSTAT   16  // array lstat(string filename)
#define FS_STAT    17  // array stat(string filename)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,930评论 25 708
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,499评论 9 467
  • 时间是伟大的作者 它能写出完美的结局 笑着说再见 即使再见遥遥无期 那时和你一起走在路上 从此欢天喜地都在心上 请...
    _苦橙阅读 511评论 0 1
  • 服务端3.1 服务端3 客户端 问题1,客户端必须发出消息,服务端才会返回信息问题2,服务端会返还之前所有的信息将...
    Icatream阅读 293评论 0 0
  • 今天是怀孕第15周,感谢我的小天使来到我的身边,自从怀孕起,整个孕期都比较舒服。我的小天使你太棒啦! 昨天是...
    玉枕沙廚阅读 329评论 0 0