1. 程式人生 > >fstream庫的檔案讀寫

fstream庫的檔案讀寫

檔案操作:

       開啟,找到位置,讀/寫(讀寫多少),關閉

fstream庫實現:

void get_pic(const char * inFilePath, const char * outFilePath){
	//開啟
    /*ios::app:    //以追加的方式開啟檔案  
     *ios::ate:    //檔案開啟後定位到檔案尾,ios:app就包含有此屬性  
     *ios::binary:  //以二進位制方式開啟檔案,預設的方式是文字方式。兩種方式的區別見前文  
     *ios::in:     //檔案以輸入方式開啟(檔案資料輸入到記憶體)  
     *ios::out:    //檔案以輸出方式開啟(記憶體資料輸出到檔案)  
     *ios::nocreate: //不建立檔案,所以檔案不存在時開啟失敗  
     *ios::noreplace://不覆蓋檔案,所以開啟檔案時如果檔案存在失敗  
     *ios::trunc:   //如果檔案存在,把檔案長度設為0  
	 *用open也可以 in.open( , , )
     */
     ifstream in(inFilePath,ios::in|ios::binary);
     ofstream out(outFilePath,ios::out|ios::binary);
	 
	 //獲取檔案長度endP
     long curP,endP;
     in.seekg (0, ios::end);
     endP = in.tellg();
     in.seekg (0, ios::beg);
	 //獲取當前操作位置curP
	 curP = in.tellg();
	 
	 //讀寫
	 /*ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間; 
	 * 類 fstream 的物件同時擁有這兩個函式。它們的原型是:
     * write ( char * buffer, streamsize size );
     * read ( char * buffer, streamsize size );
     * 這裡 buffer 是一塊記憶體的地址,用來儲存或讀出資料。引數size 是一個整數值,表示要從快取(buffer)中讀出或寫入的字元數。
     * 讀取寫入的過程,都有當前指標指向當前位置
     */
	 in.read(buffer,4096);
     out.write(buffer,4096);
     
    //關閉
     in.close();
     out.close();
}