程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> VC中文件操作的幾種方式(1,2)

VC中文件操作的幾種方式(1,2)

編輯:關於C語言

第6章  使用文件存取對象 文件可以用來存儲一張《清明上河圖》,一曲《春江花月夜》,當然也可以存儲一部《紅樓夢》,文件的內容依賴於應用程序來解釋。幾乎所有的操作系統都通過文件的界面允許用戶保存、管理數據。所以,我們理所當然把文件當做數據存取介質的第一選擇。 6.1  文件操作的幾種方式 操作計算機的人都會接觸到文件,文件的操作通常包括文件的讀取、修改,有的時候我們還需要對文件進行外部管理,包括文件復制、刪除及屬性設置等。 6.1.1  使用CRT函數std::fxxx() 文件操作可以采用C語言運行時期庫來完成,CRT提供的fxxx()函數如表6-1所示。 表6-1  CRT文件操作函數 函數 含義 fopen 打開指定文件名的文件 fread 從文件中讀取指定長度的數據 fwrite 向文件中寫入指定的數據 fclose 關閉文件 feof 判斷是否達到文件結尾 fgetc 從文本文件中讀取一個字符 fgets 從文本文件中讀取一個字符串 fputc 向文本文件中寫入一個字符 fputs 向文本文件中寫入一個字符串 當我們打開、創建一個文件時,常常需要調用fopen()函數,該函數的原型為:

  1. FILE *fopen(   
  2.    const char *filename,  
  3.    const char *mode   
  4. ); 
參數解釋 filename:指定文件的文件名,如test.out。 mode:指定文件的操作方式,如表6-2所示。 表6-2  fopen文件操作方式 標志 含義 r 讀模式,如果文件不存在則會失敗 w 寫模式,如果文件已存在則會清空其內容 a 追加模式,寫入的內容追加在原有內容之後, 如果文件不存在則會自動創建 r+ 讀寫模式文件必須存在) w+ 讀寫模式,如果文件已存在則會清空其內容 a+ 讀+追加模式 t 文本方式 b 二進制方式 ccs=ENCODING 文件編碼方式,可指定ENCODING 為 UTF-8、UTF-16LE、UNICODE 文件的操作方式可以是如上標志的組合,如:r+b。當采用"ccs=ENCODING"時,我們需要在前面添加一個","作為分隔。如我們以讀寫方式、UNICODE編碼打開某個文件:
  1. fopen("newfile.txt""rw, ccs=UNICODE"); 
如下羅列出使用CRT函數進行文件操作的流程。 使用fopen()創建、打開文件,返回一個文件指針FILE *; 以FILE *作為參數,調用fread()、fwrite()等操作函數完成對文件的讀寫。fread()、fwrite()函數的原型為:
  1. size_t fread(   
  2.    void *buffer,  
  3.    size_t size,  
  4.    size_t count,  
  5.    FILE *stream   
  6. );  
  7.  
  8. size_t fwrite(  
  9.    const void *buffer,  
  10.    size_t size,  
  11.    size_t count,  
  12.    FILE *stream   
  13. ); 
調用fclose()關閉文件指針。 使用CRT操作文件流程如圖6-1所示。   點擊查看大圖)圖6-1  使用CRT操作文件的步驟 6.1.2  使用標准C++庫std::fstream 標准C++操作文件主要是通過文件流fstream來完成的。文件輸入/輸出流用以實現文件讀取和存儲的操作,這種基於流的文件操作如圖6-2所示。   點擊查看大圖)圖6-2  文件輸入/輸出流 和文件有關系的輸入/輸出類主要在頭文件<fstream>中被定義。在這個頭文件中主要定義了3個類。由這3個類控制對文件的各種輸入/輸出操作,它們分別是ifstream、ofstream、fstream。其中fstream類是由iostream類派生而來的,它們之間的繼承關系如圖6-3所示。 如果需要使用fstream,則需要包含<fstream>頭文件,與iostream不同的是,fstream需要和指定的文件名相關聯,如:
 
  1. ofstream out("test.out");  
  2. out << "hello, world!"
  點擊查看大圖)圖6-3  fstream與iostream 除流操作符之外,fstream提供的文件操作函數如表6-3所示。 表6-3  fstream文件操作函數 函數 含義 open 打開文件 close 關閉文件 is_open 判斷當前文件是否已打開 其中,open()函數具有多個原型:
 
  1. void open(  
  2.     const char *_Filename,  
  3.     ios_base::openmode _Mode = ios_base::in | ios_base::out,  
  4.     int _Prot = (int)ios_base::_Openprot  
  5. );  
  6. void open(  
  7.     const char *_Filename,  
  8.     ios_base::openmode _Mode  
  9. );  
  10. void open(  
  11.     const wchar_t *_Filename,  
  12.     ios_base::openmode _Mode = ios_base::in | ios_base::out,  
  13.     int _Prot = (int)ios_base::_Openprot  
  14. );  
  15. void open(  
  16.     const wchar_t *_Filename,  
  17.     ios_base::openmode _Mode  
  18. ); 
參數ios_base::openmode用以指定文件的打開方式,可以是如表6-4所示的標志的組合。 表6-4  ios_base::openmode標志 標志 含義 ios::app 追加模式append),新輸出的內容追加在原文件內容的後面 ios::ate 文件打開後定位到文件尾,ios:app就包含此屬性 ios::binary 以二進制方式打開文件,默認的方式是文本方式 ios::in 文件以輸入方式打開 ios::out 文件以輸出方式打開 ios::trunc 截斷模式truncate),如果文件存在,則把文件長度設為0 ios::nocreate 如果文件不存在則不創建 ios::noreplace 如果文件已存在則不替換 如下羅列出使用fstream類進行文件操作的流程。 調用fstream::fopen()創建、打開文件。 通過流操作,使用fstream完成輸入/輸出,如:out << "hello, world!"。 調用fstream::close()關閉文件。 ====未完待續==== 以上摘自《把脈VC++》第4.6.2小節的內容 ,轉載請注明出處。

本文出自 “白喬博客” 博客,請務必保留此出處http://bluejoe.blog.51cto.com/807902/196504

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved