1、前言

工作中涉及到文件系统,有时候需要判断文件和目录是否存在。我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。

2、stat系列函数

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

1 structstat {

2 mode_t st_mode; //file type & mode(permissions)

3 ino_t st_ino; //i-node number(serial number)

4 dev_t st_dev; //device number(filesystem)

5 dev_t st_rdev; //device number for specials files

6 nlink_t st_nlink; //number of links

7 uid_t st_uid; //user ID of owner

8 gid_t st_gid; //group ID of owner

9 off_t st_size; //size in bytes, for regular files

10 time_t st_atime; //time of last access

11 time_t st_mtime; //time of last modification

12 time_t st_ctime; //time of last file status change

13 long st_blksize; //best I/O block size

14 long st_blocks; //number of 512-byte blocks allocated

15 };

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

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

1、ENOENT 参数file_name 指定的文件不存在

2、ENOTDIR 路径中的目录存在但却非真正的目录

3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接

4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间

5、EACCESS 存取文件时被拒绝

6、ENOMEM 核心内存不足

7、ENAMETOOLONG 参数file_name 的路径名称太长

3、access函数

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

#include

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

mode取值:

F_OK   测试文件是否存在

R_OK  测试读权限

W_OK 测试写权限

X_OK 测试执行权限

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

4、oepndir函数

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

java linux 读取文件是否存在_linux下判断文件和目录是否存在相关推荐

  1. java linux 起多个进程_linux下tomcat启动后出现多个java进程

    偶尔发现linux下tomcat启动后出现多个java进程,如下: 000 S     0  4789     1  0  85   0    - 75083 schedu pts/1    00:0 ...

  2. java excel转pdf linux,从JAVA直接读取EXCEL、WORD并生成PDF文件

    从JAVA直接读取EXCEL.WORD并生成PDF文件 1.操作EXCEL和WORD文件 使用JAVA从EXCEL.WORD文件中读写数据,可以使用http://jexcelapi.sourcefor ...

  3. linux下判断文件和目录是否存在[总结]

    原文地址为: linux下判断文件和目录是否存在[总结] 1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便 ...

  4. linux下判断文件是否存在,文件夹是否存在,是否有访问权限的方法

    通常我们判断文件是否存在,就看文件是否能够访问到,如果能访问到,文件存在,访问不到,则文件不存在. 代码判断文件是否存在C++ 方法一: 使用access函数判断文件是否存在,以及文件的权限. acc ...

  5. 使用readFile方法读取文件的内容,并判断文件是否读取成功(node)

    2.2 读取指定文件中的内容 1.fs.readFile()的语法格式             使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:               ...

  6. c语言c 检测某文件是否存在,C语言-判断文件是否存在

    1 Linux  access() access()函数用来判断用户是否具有访问某个文件的权限(或判断某个文件是否存 在). access 总揽: #include int access(const ...

  7. js下载文件并修改文件名 / js判断文件后缀

    js下载文件并修改文件名 / js判断文件后缀 代码如下(示例): //handlerName:文件名 filePath:下载路径downloadFile (handlerName, filePath ...

  8. linux手动生成dump文件权限不足_linux下生成dump文件方法及设置

    https://andyniu.iteye.com/blog/1965571 Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储.在程序 ...

  9. linux移动文件 rf参数_linux下文件的复制、移动与删除

    查看centOS 版本     cat /etc/redhat-release 1,复制粘贴文件 cp  [选项]  源文件或目录  目标文件或目录 2,剪切粘贴文件 mv [选项]  源文件或目录 ...

最新文章

  1. Oracle+jsp+Servlet的员工表的简单增删改查
  2. [转]分布式文件系统 MogileFS 安装手册
  3. 【首发】徐亦达团队新论文推荐:模限界矩阵分解
  4. [转] android获取手机信息大全
  5. 改变Jupyter的默认项目路径
  6. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术
  7. java十进制转十六进制
  8. (216)滤波器介绍
  9. Moonlight 2紧随Silverlight而来
  10. python函数回顾:abs()
  11. textarea标签的文字居中解决方法
  12. paip.提升用户体验----应用程序调用外部字体的应用..
  13. linux磁盘挂载特别慢,arch开机速度竟然是挂载磁盘拖慢了。。
  14. git squash 和 git rebase
  15. 如何选择crm客户管理系统
  16. ASP.NET 安全认证(二)——灵活运用 Form 表单认证中的 deny 与 allow 及保护 .htm 等文件...
  17. java广度优先爬虫示例_广度优先搜索与网络爬虫
  18. 识别INSB号码C语言如何讲述,探究机器码,深入研究C语言程序的机制
  19. c#窗体程序生成错误_创建一个没有窗口的程序 (C#) | 学步园
  20. 【python】pythonPTA编程练习2

热门文章

  1. 【博学谷学习记录】超强总结,用心分享| MapReduce基础学习
  2. 使用 ss 代理增加 gradle 编译速度
  3. 服务器系统盘符加密,在CentOS 8系统服务器上设置网络绑定磁盘加密(NBDE)
  4. 【linux encrypt luks 磁盘加密 分区加密】
  5. 搭建内网pip3镜像源
  6. 什么是代理、网关、隧道?
  7. Material-UI 5 即将推出
  8. mybatis 乐观锁实现
  9. 测试:你惯用右脑还是左脑
  10. 使用真机导致Androidstudio打印不出log