Windows文件操作【C/C++】

1 获取当前目录

char* _getcwd( char *buffer, int maxlen )

ITEM Meaning
功能 获得当前工作目录.
头文件 include < direct.h>
返回值 成功返回指向buffer的pointer
失败返回NULL,且设置errno为以下三个值之一
ENODEV 无该设备
ENOMEM 内存不够
ERANGE 结果超出范围
注意 当第一个参数为 NULL 时, 第二个参数 maxlen 长度设置无效
且函数使用 malloc 分配足够内存, 需要将函数返回值传递给 free() 函数来释放内存.
当第一个参数不为 NULL 时,maxlen 指定长度不够函数返回错,设置errno为ERANGE

2 更改当前工作目录

int _chdir( const char *dirname );

ITEM Meaning
功能 更改当前工作目录.
头文件 include < direct.h>
返回值 成功返回0
失败返回-1
且设置errno如下:ENOENT 该路径不存在

3 文件遍历(查找)

long _findfirst( char *filespec, struct _finddata_t *fileinfo );

ITEM Meaning
功能 提供与filespec指定入口泛式匹配的第一个文件。
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < io.h >
参数 filespec - 目标文件规范,可以包含通配符
fileinfo - 文件信息buffer
返回值 成功返回唯一的搜索句柄
出错返回-1,且设置errno为如下值:
ENOENT 该泛式无法匹配
EINVAL 无效文件名
struct _finddata_t  
{  
    unsigned attrib;  
    time_t time_create;  
    time_t time_access;  
    time_t time_write;  
    _fsize_t size;  
    char name[_MAX_FNAME];  
};
ITEM Meaning
unsigned atrrib 文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。
文件属性是用位表示的,主要有以下一些:
_A_ARCH(存档) _A_HIDDEN(隐藏) _A_NORMAL(正常)
_A_RDONLY(只读) _A_SUBDIR(文件夹) _A_SYSTEM(系统)
这些都是在< io.h>中定义的宏,可以直接使用,而本身的意义其实是一个无符号整型(只不过这个整型应该是2的几次幂,从而保证只有一位为1,而其他位为0)。
既然是位表示,那么当一个文件有多个属性时,它往往是通过位或的方式,来得到几个属性的综合。
例如只读+隐藏+系统属性:应该为:_A_HIDDEN|_A_RDONLY|_A_SYSTEM 。
time_t time_create 这里的time_t是一个变量类型,用来存储文件创建时间。
time_t time_access 文件最后一次被访问的时间。
time_t time_write 文件最后一次被修改的时间。
_fsize_t size 文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数。
char name[_MAX_FNAME] 文件的文件名。这里的_MAX_FNAME是一个常量宏,它在< stdlib.h >头文件中被定义,表示的是文件名的最大长度。

int _findnext( long handle, struct _finddata_t *fileinfo );

ITEM Meaning
功能 按照前面_findfirst中的泛式规则,查找下一个符合该泛式的文件,并以此为依据修改fileinfo中的值。
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < io.h>
参数 long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
fileinfo - 文件信息buffer
返回值 成功返回唯一的搜索句柄
出错返回-1,且设置errno为如下值:
ENOENT 没有更多的符合该泛式的文件

int _findclose( long handle );

ITEM Meaning
功能 关闭搜寻句柄并释放相应资源
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < io.h>
参数 long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
返回值 成功返回唯一的搜索句柄
出错返回-1,且设置errno为如下值:
ENOENT 没有更多的符合该泛式的文件

4 创建目录

int _mkdir( const char *dirname );

ITEM Meaning
功能 创建一个新目录,目录名为dirname.
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < direct.h>
参数 long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
返回值 成功返回唯一的搜索句柄
出错返回-1,且设置errno为如下值:
EACCESS : 权限不允许
EEXIST : 该目录已存在
ENOENT : 无该文件或目录

5 删除目录

int _rmdir( const char *dirname );

ITEM Meaning
功能 删除名为dirname的目录.
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < direct.h>
参数 long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
返回值 成功返回唯一的搜索句柄
出错返回-1,且设置errno为如下值:
EACCESS : 权限不允许
ENOTEMPTY : dirname不是文件夹;或者该文件夹不空;或者dirname为当前工作文件夹;或者dirname为当根文件夹;
ENOENT : 无该文件或目录

6 获取文件权限

int _access( const char *path, int mode );

ITEM Meaning
功能 测定文件/目录存取权限.
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < io.h>
参数 path - 文件或者目录
mode - 权限设定,其值如下:00 Existence only;02 Write permission;04 Read permission;06 Read and write permission

7 更改当前工作驱动器

int _chdrive( int drive );

ITEM Meaning
功能 更改当前工作驱动器.
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < direct.h>
参数 drive =1 : A盘
drive =2 : B盘
drive =3 : C盘
……
返回值 成功返回0
失败返回-1

8 获取指定驱动器的当前工作路径

char* _getdcwd( int drive, char *buffer, int maxlen );

ITEM Meaning
功能 获得指定驱动器的当前工作路径.
通常后继用_findnext函数后续使用来完成某泛式下的文件遍历。
头文件 include < direct.h>
参数 当第一个参数为 NULL 时,该函数设置errno为ERANGE
返回值 成功返回指向buffer的pointer
失败返回NULL,且设置errno为以下三个值之一:
ENODEV 无该设备
ENOMEM 内存不够
ERANGE 结果超出范围
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章