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 結果超出範圍 |