VC 檔案操作

2021-04-07 01:27:33 字數 4124 閱讀 3196

1

.檔案的查詢

當對乙個檔案操作時,如果不知道該檔案是否存在,就要首先進行查詢。

mfc中有乙個專門用來進行檔案查詢的類

「cfilefind」

,使用它可以方便快捷地進行檔案的查詢。下面這段**演示了這個類的最基本使用方法。

cstring strfiletitle; 

cfilefind finder; 

bool bworking = finder.findfile("c://windows//sysbkup//*.cab"); 

while(bworking)  2

.檔案的開啟

/儲存對話方塊

讓使用者選擇檔案進行開啟和儲存操作時,就要用到檔案開啟

/儲存對話方塊。

mfc的類

「cfiledialog」

用於實現這種功能。使用

「cfiledialog」

宣告乙個物件時,第乙個

bool

型引數用於指定檔案的開啟或儲存,當為

true

時將構造乙個檔案開啟對話方塊,為

false

時構造乙個檔案儲存對話方塊。

在構造「cfiledialog」

物件時,如果在引數中指定了

「ofn_allowmultiselect」

風格,則在此對話方塊中可以進行多選操作。此時要重點注意為此

「cfiledialog」

物件的「m_ofn.lpstrfile」

分配一塊記憶體,用於儲存多選操作所返回的所有檔案路徑名,如果不進行分配或分配的記憶體過小就會導致操作失敗。下面這段程式演示了檔案開啟對話方塊的使用方法。

cfiledialog mfiledlg(true, null,null, ofn_hidereadonly | ofn_overwriteprompt | ofn_allowmultiselect, "all files (*.*)|*.*| |", afxgetmainwnd());

cstring str(" ", 10000); 

mfiledlg.m_ofn.lpstrfile=str.getbuffer(10000); 

str.releasebuffer(); 

position mpos=mfiledlg.getstartposition(); 

cstring pathname(" ", 128); 

cfilestatus status; 

while(mpos!=null)  3

.檔案的讀寫

檔案的讀寫非常重要,下面將重點進行介紹。檔案讀寫最普通的方法是直接使用

「cfile」

類進行,如檔案的讀寫可以使用下面的方法:

//對檔案進行讀操作

char sread[2]; 

cfile mfile(_t("user.txt"),cfile::moderead); 

if(mfile.getlength()<2) 

return; 

mfile.read(sread

,2); 

mfile.close(); 

//對檔案進行寫操作

cfile mfile(_t("user.txt"), cfile::modewrite|cfile::modecreate); 

mfile.write(sread

,2); 

mfile.flush(); 

mfile.close(); 

雖然這種方法最為基本,但是它使用煩瑣,而且功能非常簡單。這裡推薦的是使用

「carchive」

,它的使用方法簡單且功能十分強大。首先還是用

「cfile」

宣告乙個物件,然後用這個物件的指標做引數宣告乙個

「carchive」

物件,這樣就可以非常方便地儲存各種複雜的資料型別了。它的使用方法見下例:

//對檔案進行寫操作

cstring strtemp; 

cfile mfile; 

mfile.open("d://dd//try.try",cfile::modecreate|cfile::modenotruncate|cfile::modewrite); 

carchive ar(&mfile

,carchive::store); 

ar<

對檔案進行讀操作

cfile mfile; 

if(mfile.open("d://dd//try.try"

,cfile::moderead)==0) 

return; 

carchive ar(&mfile

,carchive::load); 

ar>>strtemp; 

ar.close(); 

mfile.close(); 

「carchive」

的「<<」

和「>>」

操作符用於簡單資料型別的讀寫,對於

「cobject」

派生類的物件的訪問要使用

readobject()

和writeobject()

。使用「carchive」

的readclass()

和writeclass()

還可以進行類的讀寫,如:

//儲存

caboutdlg

類ar.writeclass(runtime_class(caboutdlg)); 

//讀取

caboutdlg

類cruntimeclass*mrunclass=ar.read 

class(); 

//使用

caboutdlg

類cobject* pobject=mrunclass->createobject(); 

((cdialog* )pobject)->domodal(); 

雖然vc

提供的文件

/視結構中的文件也可進行這些操作,但是不容易理解、使用和管理,如果要進行的檔案操作只是簡單的讀寫整行的字串,建議使用

「cstdiofile」

,用它來進行此類操作非常方便,如下例:

cstdiofile mfile; 

cfileexception mexcept; 

mfile.open( "d://temp//aa.bat", cfile::modewrite, &mexcept); 

cstring string="i am a string."; 

mfile.writestring(string); 

mfile.close(); 

4.臨時檔案的使用

正規軟體經常用到臨時檔案,經常可以看到

「c:/windows/temp」

目錄下有大量的擴充套件名為

「.tmp」

的檔案,這些就是程式執行時建立的臨時檔案。臨時檔案的使用方法基本與常規檔案一樣,只是檔名應該呼叫函式

gettempfilename()

獲得。它的第乙個引數是建立此臨時檔案的路徑,第二個引數是建立臨時檔名的字首,第四個引數用於得到建立的臨時檔名。得到此臨時檔名以後,就可以用它來建立並操作檔案了,如:

char sztemppath[_max_path]

,sztempfile[_max_path]; 

gettemppath(_max_path, sztemppath); 

gettempfilename(sztemppath

,_t ("my_"),0

,sztempfile); 

cfile m_tempfile(sztempfile

,cfile:: modecreate|cfile:: modewrite); 

char m_char='a'; 

m_tempfile.write(&m_char

,2); 

m_tempfile.close(); 

5.檔案的複製、刪除等

mfc中沒有提供直接進行這些操作的功能,因而要使用

sdk。

sdk中的檔案相關函式常用的有

copyfile()

、createdirectory()

、deletefile()

、movefile()

。它們的用法很簡單,可參考

msdn

VC 檔案操作

try else catch cmemoryexception e e geterrormessage szbuff,max path afxmessagebox szbuff catch cfileexception e e geterrormessage szbuff,max path afxm...

VC檔案操作總結

1.讀寫檔案 cstring strpath c test.txt 檔案路徑 cfile file if file.open strpath,cfile modecreate cfile modenotruncate cfile modewrite 寫檔案 cstring strpath c tes...

VC操作Excel檔案

excel 簡單操作其實就是讀和寫,包括新增,刪除,修改 其實和對資料庫進行操作是一樣的,微軟提供了方法 1.首先獲得計算機內已經安裝的驅動名稱 sqlgetinstalleddrivers szbuf,cbbufmax,cbbufout 引數1 是字串,它將獲得所有驅動名稱,中間以null分隔,第...