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 结果超出范围 |