C语言中如何检查一个文件是否存在以及权限等信息

简介:

用函数access,头文件是io.h(linux下使用unistd.h   
int   access(const   char   *filename,   int   amode);

amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。

这个函数还可以检查其它文件属性:

06     检查读写权限 
04     检查读权限 
02     检查写权限 
01     检查执行权限 
00     检查文件的存在性

在UNIX和VC下实验成功。

好处是 fopen(..,"r")不好,当无读权限时一不行了。
而这个就算这个文件没有读权限,也可以判断这个文件存在于否

存在返回0,不存在返回-1

  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     printf ("%d",access("test.db",0));  
  5. }  


测试程序

  1. #define __WINDOWS__     // windows系统使用  
  2. //#define __LINUX__     // linux系统下使用  
  3.   
  4. #ifdef __WINDOWS__  
  5. #include <io.h>  
  6. #endif  
  7.   
  8. #ifdef __LINUX__  
  9. #include <unistd.h>  
  10. #endif  
  11.   
  12.   
  13. #include <stdio.h>  
  14. #include <stdlib.h>  
  15.   
  16.   
  17. #define FILE_NAME  "test.db"  
  18.   
  19. int main( void )  
  20. {  
  21.     /* Check for existence */  
  22.     if( (access(FILE_NAME, 0 )) != -1 )  
  23.     {  
  24.         printf( "File [ %s ] exists\n", FILE_NAME);  
  25.         /* Check for write permission */  
  26.         if( (_access(FILE_NAME, 2 )) != -1 )  
  27.         {  
  28.             printf( "File [ %s ] has write permission\n", FILE_NAME);  
  29.         }  
  30.         else  
  31.         {  
  32.             printf( "File [ %s ] has not write permission\n", FILE_NAME);  
  33.         }  
  34.     }  
  35.     else  
  36.     {  
  37.         printf( "File [ %s ] don't exists\n", FILE_NAME);  
  38.     }  
  39. }  


转载:http://blog.csdn.net/gatieme/article/details/25598433

目录
相关文章
|
2月前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
2月前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
|
2月前
|
C语言
【C语言】探索文件读写函数的全貌(三)
【C语言】探索文件读写函数的全貌
|
2月前
|
存储 C语言
【C语言】探索文件读写函数的全貌(二)
【C语言】探索文件读写函数的全貌
|
2月前
|
C语言
【C语言】探索文件读写函数的全貌(一)
【C语言】探索文件读写函数的全貌
|
2月前
|
存储 文件存储 C语言
【C语言】深入了解文件:简明指南
【C语言】深入了解文件:简明指南
|
3月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
6月前
|
C语言
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
48 0
|
存储 缓存 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
|
存储 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)