處理類別
C++處理檔案的類別為ifstream(檔案輸入), ofstream(檔案輸出), fstream(檔案輸出入). 輸入是指讀入程式的意思, 輸出是指由程式寫入檔案
使用fstream, 需宣告一個物件, 再由此物件進行檔案串流操作
fstream file;
開啟檔案
使用fsteam的open(參數1, 參數2)函數進行開檔, 參數1為檔案名稱, 第2參數為開啟模式. 開啟模式如下
| 模式參數 | 用途 |
| ios::in | 檔案開啟為讀取(輸入)狀態 |
| ios::out | 檔案開啟為寫入(輸出)狀態 |
| ios::ate | 從檔案結尾讀取(輸入)及寫入(輸 出)資料 |
| ios::app | 從檔案結尾寫入(輸出)資料 |
| ios::trunc | 如果檔案存在,就清除檔案 內容的資料 |
| ios::nocreat | 若開啟檔案時,檔案不存 在,則產生錯誤 |
| ios::noreplace | 若開啟檔案時,檔案存在, 且ate與app為被設定,則產生錯誤 |
| ios::binary | 以二進位模式開啟檔案,預 設的檔案模式為文字模式 |
模式若有二個或以上, 使用 | 隔開, 如
file.open(“d:\\test.jpg”, ios::in|ios::binary);
常用函數
| 函數 | 說明 |
| open(str,mode) | 以mode模式開啟名為str的檔案 |
| close( ) | 關閉檔案 |
| is_open( ) | 檢查檔案是否為開啟狀態, 若是則傳回true,否則傳回flase |
| write(str,size) | 將str陣列中size個字元寫入到檔案中 |
| read(str,size) | 從檔案中讀取資料至檔案結 尾為止設定給str陣列,但至多不超過size個 字元 |
| get(char) | 從檔案中讀取一個字元 |
以下程式為將二進位檔案轉換成16進位
#include <iostream>
#include <fstream>
using namespace std;
fstream file;
int main(){
int index=0;
fstream file;
file.open("d:\\test.jpg", ios::in|ios::binary);
char buff[20];
if (!file){
cout<<"fail"<<endl;
}
else{
while(!file.eof()){
for (int i=0;i<20;i++)buff[i]=0;
file.read(buff, sizeof(buff));
printf("%08d ",index);
for (int i=0;i<20;i++){
printf("%02x ", buff[i]&0xff);
}
index+=20;
printf("\n");
}
}
system("pause");
return 0;
}
