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 結果超出範圍
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章