CFile類開啟檔案的有趣現象

2021-04-14 23:52:52 字數 1237 閱讀 3490

在寫 freeposter 時,遇到這樣乙個問題,當前目錄在 opendialog  後改變了。

cfile類開啟檔案的有趣現象

在編制對話方塊應用程式的過程中,我發現乙個很有趣的現象,就是當使用cfile類的open成員函式開啟乙個檔案時,如果不指定檔案的路徑會預設為當前程式的路徑,但如果使用了檔案開啟對話方塊cfiledialog類並開啟了乙個檔案的話,則open成員函式檔案的預設路徑會變成cfiledialog類開啟檔案的路徑。下面詳細說明如下:

cfile::open

virtual bool open(lpctstr lpszfilename,uint nopenflags,cfileexception* perror=null);

返回值:若開啟成功,則返回非0值;否則返回0。僅當返回0時perror引數才有意義。

引數:lpszfilename 乙個字串,指定所需檔案的路徑。

nopenflag 乙個uint值,定義檔案的共享和訪問方式。

perror 標識指向乙個已有的檔案異常物件的指標,該物件指示開啟操作的完成狀態。

說明:open函式是為了配合預設的cfile建構函式使用而設計的。

我使用如下的**來獲得當前開啟檔案的預設路徑:

cstring strcurrentpath,strmsg;

getcurrentdirectory(200,strcurrentpath.getbuffer(200));

strcurrentpath.releasebuffer();

strmsg=_t("當前檔案開啟路徑為:/n")+strcurrentpath;

messagebox(strmsg);

當我沒有使用檔案開啟對話方塊時獲得的路徑情形如下:

當我使用了檔案開啟對話方塊開啟c:/program files/desktop.ini時獲得的路徑情形如下:

如果你在程式編制過程中在使用了檔案開啟對話方塊cfiledialog以後又想使用cfile::open開啟程式所在路徑的檔案,就只有在使用檔案開啟對話方塊cfiledialog之前使用windows api函式getcurrentdirectory()獲得路徑並使用變數儲存下來。

以上是作者程式設計過程的一點小體會,貽笑大方了,請讀者多加指教。 

上面的兄弟,你弄錯了,cfiledialog類使用後,預設情況下是改變了當前目錄的路徑,所以有這樣的現象,如果想不受其影響,只要在使用時,加上ofn_nochangedir標誌即可

C File類 檔案操作

c 語言中 file 類同樣可以完成與 fileinfo 類相似的功能,但 file 類中也提供了一些不同的方法。file 類中獲取或設定檔案資訊的常用方法如下表所示。屬性或方法 作用datetime getcreationtime string path 返回指定檔案或目錄的建立日期和時間 dat...

c File類(寫入檔案)

1 file.writeallbytes string path,content 建立乙個新檔案,寫入指定的位元組陣列,與filereadallbytes 相反,如果目標檔案已經存在,則會覆蓋目標檔案。system.text.encoding.utf8.getbytes content 把字串轉位元...

C file類常用檔案的操作

file類,是乙個靜態類,主要是來提供一些函式庫用的。靜態實用類,提供了很多靜態的方法,支援對檔案的基本操作,包括建立,拷貝,移動,刪除和 開啟乙個檔案。1 建立檔案方法 file.create c users administrator desktop 測試1 測試.txt 引數1 要建立的檔案路...