基於C的流式檔案操作 FILE

2021-09-02 01:32:16 字數 2170 閱讀 9050

這種檔案操作有乙個重要的結構 file ,file這個結構包含了檔案操作的基本屬性,對檔案的操作都要通過這個結構的指標來進行。接下來介紹這種操作的一些常用函式。

fopen()

fopen的原型是:file *fopen(const char *filename,const char *mode)

引數filename指向要開啟的檔名,mode表示開啟狀態的字串,其取值如下表:

mode字串含義r

開啟唯讀檔案,該檔案必須存在。

r+開啟可讀寫的檔案,該檔案必須存在。

w開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案

w+開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

wb+讀寫開啟或建立乙個二進位制檔案,允許讀和寫。

wt+讀寫開啟或著建立乙個文字檔案;允許讀寫。

a以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

a+以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留)

at+讀寫開啟乙個文字檔案,允許讀或在文字末追加資料。

ab+讀寫開啟乙個二進位制檔案,允許讀或在檔案末追加資料。

fopen()函式返回乙個file指標,所以申明乙個file指標後不用初始化,而是用fopen()來返回乙個指標並與乙個特定的檔案相連,如果成敗,返回null。

使用示例:

file *fp;

fp = fopen(filepathtmp.c_str(), "w");

fclose()

fclose()的功能就是關閉用fopen()開啟的檔案,其原型是:int fclose(file *fp);如果成功,返回0,失敗返回eof。在程式結束時一定要記得關閉開啟的檔案,而且fclose的關閉與fopen的開啟要盡量在同一片作用域。

使用示例:

file *fp;

fp = fopen(filepathtmp.c_str(), "w");

fclose(fp);

fwrite()

fwrite() 是乙個檔案處理函式,功能是向指定的檔案中寫入若干資料塊,如成功執行則返回實際寫入的資料塊數目。

函式原型 size_t fwrite(const void * buffer, size_t size, size_t count, file fp);

返回值:返回實際寫入的資料塊數目

(1)buffer:是乙個指標,對fwrite來說,是要獲取資料的位址;

(2)引數 size 是指單個元素的大小(其單位是位元組而不是位,例如,讀取乙個 int 型資料就是 4 位元組)

(3)引數 count 指出要讀或寫的元素個數,這些元素在 buf 所指的記憶體空間中連續存放,共佔「sizecount」個位元組

(4)fp:目標檔案指標;

(5)返回實際寫入的資料項個數count。 成功時返回的記錄數等於 count 引數,出錯或讀到檔案末尾時返回的記錄數小於 count,也可能返回 0。

使用舉例:

file *fp;

fp = fopen(filepathtmp.c_str(), "w");

int64_t length = fwrite(cstr, sizeof(char), count, fp);

需要注意的是:

如果返回值等於預期的count,則說明檔案寫入正確且全部寫入。

如果這個返回值等於零,則寫入過程發生錯誤。

這個返回值可能小於預期count。要用ferror()函式判斷是否發生錯誤,發生錯誤則丟擲異常。未發生錯誤則要繼續將未寫入的內容迴圈寫入。

ferror()

ferror()函式 : ferror() 函式的宣告 int ferror(file *fp)

ferror()函式也有返回值,如果發生錯誤,返回非零值,未發生錯誤,則返回0。

使用舉例:

if( ferror(fp) )

C 檔案操作 File類

file類的常用靜態方法表 方 法 說 明 create 在指定路徑中建立檔案 delete 刪除指定的檔案 exists 判斷指定的檔案是否存在 open 開啟指定路徑上的檔案 openread 開啟檔案以進行讀取 openwrite 開啟檔案以進行寫入 move 將指定檔案移到新位置 copy ...

File檔案操作

open public static filestream open string path,filemode mode filemode createnew 指定作業系統應建立新檔案。此操作需要 fileiopermissionaccess.write。如果檔案已存在,則將引發 ioexcepti...

C語言詳解FILE檔案操作

c語言詳解file檔案操作 toc 需要了解的概念 需要理解的知識點包括 資料流 緩衝區 檔案型別 檔案訪問方式 1.1 資料流 指程式與資料的互動是以流的形式進行的。進行c語言檔案的訪問時,都會先進行 開啟檔案 操作,這個操作就是在開啟資料流,而 關閉檔案 操作就是關閉資料流。1.2 緩衝區 bu...