解讀VC 程式設計中的檔案操作API和CFile類

2021-07-14 07:48:25 字數 2542 閱讀 3240

handle handle;

win32_find_data find_data;

handle = :: findfirstfile("d:\vss",&find_data);

findclose(handle);

find_data.dwfileattributes = find_data.dwfileattributes|file_attribute_readonly;

::setfileattributes("d:\vss",find_data.dwfileattributes);

在上面的介紹中,除了可以設定檔案的屬性之外,在操作的過程當中也可以取得檔案的其他一些資訊,可以根據具體的需要來實現。

5.獲取檔名,檔案型別,檔案長度,檔案路徑

用利用cfile開啟乙個檔案時,可以在利用成員函式

virtual cstring getfilename( ) const, 

virtual cstring getfiletitle( ) const, 

virtual cstring getfilepath( ) const, 

virtual dword getlength( ) const;throw( cfileexception );

來取得相關資訊,如果乙個檔案的全路經是: c:\windows\write\myfile.wri,則每個函式取得的是: myfile.wri, myfile, c:\windows\write\myfile.wri. getlength取得檔案大小是按位元組為單位的。

也可以利用:

virtual void setlength( dword dwnewlen );throw( cfileexception );

virtual void setfilepath( lpctstr lpsznewname );

來設定檔案的長度和路徑。

在當前的檔案下面新建乙個text.txt檔案,在裡面寫點東西,然後執行下面程式:

cfile file("text.txt",cfile::modereadwrite);

ulonglong length;

cstring strfilepath;

length = file.getlength();

length = length + 1024*10;

file.setlength(length);

file.setfilepath("d:\text.txt");

strfilepath = file.getfilepath();

messagebox(strfilepath);

file.close();

最後發現檔案的路徑變了,但是在d盤下面並沒有找到text.txt,原因是setfilepath只能指定乙個路徑給檔案,setfilepath並不能做為移動檔案來使用。

cfile並沒有給出取得檔案型別的函式,有了上面基礎,這個很容易實現。

api函式中也有獲得檔案路徑的操作,這裡只是做簡單介紹,可以參照msdnn的說明:getfilesize可以獲得檔案的大小,getfullpathname 函式獲取檔案的完整路徑名,只有當該檔案在當前目錄下,結果才正確。getmodulefilename函式獲取檔案的完整路徑名,這些函式有些用到檔案控制代碼的。

用cfiledialog開啟的檔案,可以使用它的成員變數m_ofn,或者成員函式getfilename, getfiletitle, getfilepath, getfileext來取得相關資訊.

cfiledialog( bool bopenfiledialog, lpctstr lpszdefext = null, lpctstr lpszfilename = null, dword dwflags = ofn_hidereadonly | ofn_overwriteprompt, lpctstr lpszfilter = null, cwnd* pparentwnd = null );

各個引數如下:

·bopenfiledialog 為true為開啟對話方塊,為false為儲存對話檔案對話方塊

·lpszdefext 指定預設的副檔名。 

·lpszfilename 指定預設的檔名。 

·dwflags 指明一些特定風格。 

·lpszfilter它指明可供選擇的檔案型別和相應的副檔名。引數格式如: 

"chart files (*.xlc)|*.xlc|worksheet files (*.xls)|*.xls|data files (*.xlc;*.xls)|*.xlc; *.xls|all files (*.*)|*.*||";檔案型別說明和副檔名間用 | 分隔,同種型別檔案的副檔名間可以用 ; 分割,每種檔案型別間用 | 分隔,末尾用 || 指明。 

pparentwnd 為父視窗指標

cstring filefilter = "所有檔案(*.*)|*.*||";

cfiledialog filedialog(true,null,null,ofn_hidereadonly,filefilter,null);

filedialog.domodal();

messagebox(filedialog.getfilename());

解讀C 程式設計的相關檔案操作

c 檔案的概念 迄今為止,我們討論的輸入輸出是以系統指定的標準裝置 輸入裝置為鍵盤,輸出裝置為顯示器 為物件的。在實際應用中,常以磁碟檔案作為物件。即從磁碟檔案讀取資料,將資料輸出到磁碟檔案。磁碟是計算機的外部儲存器,它能夠長期保留資訊,能讀能寫,可以重新整理重寫,方便攜帶,因而得到廣泛使用。檔案 ...

VC中的檔案操作 CFILE

各種關於檔案的操作在程式設計中是十分常見,如果能對其各種操作都瞭如指掌,就可以根據實際情況找到最佳的解決方案,從而在較短的時間內編寫出高效的 因而熟練的掌握檔案操作是十分重要的。本文將對visual c 中有關檔案操作進行全面的介紹,並對在檔案操作中經常遇到的一些疑難問題進行詳細的分析。1 檔案的查...

剖析VC中的檔案操作

剖析vc中的檔案操作 2002 8 4 17 33 29 燕山大學 聶棟棟 閱讀次數 18539 各種關於檔案的操作在程式設計中十分常見,如果能對這些操作都瞭如指掌,就可以根據實際情況找到最佳的解決方案,從而可以在較短的時間內編寫出高效的 本文對visual c 中有關檔案操作進行了全面的介紹,並對...