学堂 学堂 学堂公众号手机端

linux如何查看文件目录是否存在

lewis 1年前 (2024-03-17) 阅读数 7 #技术

本文小编为大家详细介绍“linux如何查看文件目录是否存在”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux如何查看文件目录是否存在”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

查看方法:1、利用stat系列函数,如果存在则返回与文件有关的结构信息;2、利用access函数,语法“access(文件目录路径,F_OK)”;3、利用oepndir函数,如果存在则返回指针,不存在则返回NULL。


本教程操作环境:linux5.9.8系统、Dell G3电脑。

linux查看文件目录是否存在

1、stat系列函数

  stat函数用来返回与文件有关的结构信息。stat系列函数有三种情况,分别对应文件名称、文件描述符和符号链接文件。stat结构描述了文件的属性,主要包括文件的类型、文件大小等等。详细stat结构如下所示:

structstat{
mode_tst_mode;//filetype&mode(permissions)
ino_tst_ino;//i-nodenumber(serialnumber)
dev_tst_dev;//devicenumber(filesystem)
dev_tst_rdev;//devicenumberforspecialsfiles
nlink_tst_nlink;//numberoflinks
uid_tst_uid;//userIDofowner
gid_tst_gid;//groupIDofowner
off_tst_size;//sizeinbytes,forregularfiles
time_tst_atime;//timeoflastaccess
time_tst_mtime;//timeoflastmodification
time_tst_ctime;//timeoflastfilestatuschange
longst_blksize;//bestI/Oblocksize
longst_blocks;//numberof512-byteblocksallocated
};

  我们可以通过stat获取文件的类型和文件大小等信息。文件类型有:普通文件、目录文件、块特殊文件、字符特殊文件、FIFO、套接字和符号链接。要想通过stat系列函数来判断文件或者目录是否存在,当执行stat函数,如果文件存在时,还需进一步判断该文件是普通文件还是目录文件。

stat系列函数错误返回-1,错误码存在errno中,errno取值如下:

ENOENT参数file_name指定的文件不存在
ENOTDIR路径中的目录存在但却非真正的目录
ELOOP欲打开的文件有过多符号连接问题,上限为16符号连接
EFAULT参数buf为无效指针,指向无法存在的内存空间
EACCESS存取文件时被拒绝
ENOMEM核心内存不足
ENAMETOOLONG参数file_name的路径名称太长

2、access函数

  access函数按照实际用户ID和实际组进行访问权限测试。函数原型为:

#include<unistd.h>
intaccess(constchar*pathname,intmode);

mode取值:

F_OK 测试文件是否存在

R_OK 测试读权限

W_OK 测试写权限

X_OK 测试执行权限

正确判断一个文件是否存在是用access函数,实现如下所示:

3、oepndir函数

opendir函数用来打开文件目录,成功返回指针,出错返回NULL。实现如下:

读到这里,这篇“linux如何查看文件目录是否存在”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注博信行业资讯频道。

推荐阅读:java怎样判断文件目录是否存在

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门