WinCE下可用的三種不同的檔案操作API

2021-05-22 02:22:54 字數 2781 閱讀 7957

wince 檔案

以下三種是我都使用過的,歸納如下:

方法一 使用mfc的cfile類

這個最簡單了。

開啟用open,關閉用close(),檔案指標移動用seek,讀檔案用read(),寫檔案用write,獲取檔案屬性可以使用getfilestatus方法,這個可以檢視msdn,下面給幾行簡單**:

cfile file;

bool isopenok = file.open(l"//flash disk//flyfox//test.txt", cfile::typebinary|cfile::moderead); //返回真表示讀成功

if (isopenok)

file.close ();

方法二基於c的使用file結構體

開啟檔案使用_wfopen,原型如下:

file *_wfopen( const wchar_t *filename, const wchar_t *mode );

第二個引數是開啟模式,這裡有很多,比如r,w,r+等等,意義如下:

"w" 以只寫方式開啟檔案,如無檔案生成新檔案,如果檔案已存在,將被破壞

"a" 以追加的方式開啟檔案,如果檔案不存在,將自動建立乙個新檔案,已經存在的檔案eof標誌將不動。

"w+" 以讀/寫方式開啟檔案,如無檔案生成新檔案,如果檔案已存在,將被破壞

a+ 以追加方式開啟檔案,如果檔案不存在,將自動建立乙個新檔案,已經存在的檔案的eof標誌將會去掉,並在寫好新的資料後自動加到檔案末尾。

t 以文字模式開啟

b 以二進位制模式開啟。

這些標誌可以同時使用,比如rb+(就是br+)以二進位制方式,唯讀開啟檔案。

讀檔案使用fread(),原型是size_t fread( void *buffer, size_t size, size_t count, file *stream );引數buffer是儲存讀取的資料,size是每塊的位元組數;n是讀取的塊數,如果成功,返回實際讀取的塊數(不是位元組數),本函式一般用於二進位制模式開啟的檔案中。

例:char buffer[1024];

file *file = fopen(l"//flash disk//flyfox//test.txt", "r");

fread(buffer, 2, 150 , file);//按每塊2個位元組,讀取1590塊,共讀取2*150=300個位元組,實際讀取塊數可由函式返回。

寫檔案使用fwrite()。與fread對應,原型是size_t fwrite( const void *buffer, size_t size, size_t count, file *stream );引數意義同fread。

fseek()

此函式一般用於二進位制模式開啟的檔案中,功能是定位到流中指定的位置,原型是iint fseek( file *stream, long offset, int origin );如果成功返回0。引數offset是移動的字元數,origin是移動的基準,表示從哪開始移動檔案指標,取值如下:

例:fseek(file, 1000l, seek_cur);//把讀寫位置從當前位置向後移動1234位元組

fseek(file, 0l, 2);//把讀寫位置移動到檔案尾

關閉則是使用fclose,原型如下:int fclose( file *stream );

對這種方法,也給出幾行簡單**:

file *fp = _wfopen(pfilename, l"ab");

if (!fseek (fp, 100, seek_set))

fclose (fp);

方法三採用wince的api

1.  檔案的開啟createfile

以上引數比較多,這個在evc下有幫助,可以查到。可以舉個例子:

generic_write,

file_share_write,

null,

open_always,

file_attribute_normal,

null);

if (hfile == invalid_handle_value)

2.  檔案的關閉

檔案使用完之後就應該及時關閉,以釋放對它的資源

bool closehandle(handle hobject);

比如closehandle(hfile);

3.  檔案的讀寫

檔案的讀readfile

檔案的寫writefile

比如:bool b = writefile (hfile, pbuffer, dtowrite, pwrite, null);

dtowrite為準備寫入的位元組數,pwrite為dword*,獲取實際寫入的位元組數

if ( !b )

4.  檔案指標的移動setfilepointer

例如:setfilepointer(hfile, 0, null, file_begin);

5.  獲取和設定檔案資訊

引數表示檔名或者目錄名

dword getfileatrribute(lpststr lpfilename);

dword setfileattributes(lpctstr lpfilename,dword dwfileattributes);

6.  獲取和設定檔案時間

bool getfiletime

bool setfiletime

7.  獲取檔案大小

dword getfilesize(handle hfile, null);

你可以通過這個鏈結引用該篇文章:http://bear5292.bokee.com/viewdiary.19499535.html

三種不同的分頁方式

習慣了ext的ext.grid.gridpanel與ext.data.store封裝好了的分頁方式以及 ajax處理方式 ext.ajax.request success function response,action 和對後台響應json的處理 ext.ajax.request success ...

單例的三種可用寫法

單例是通過 的寫法達到乙個例項在乙個堆中永遠只有乙個的目的,從而去除記憶體不必要的開銷或達到某些例項 例如資料庫連線池 常見框架中的控制 事物 持久層等 永遠唯一的目的。筆者總結了以下三種可用的單例寫法,懶漢 餓漢式的寫法不再贅述 雙重判定鎖 雙重判定鎖 public class singleton...

三種方法更改MAC OS X下的HOSTS檔案

1.終端更改 用程式裡面開啟終端 terminal 輸入 sudo vi etc hosts 然後提示輸入系統密碼 hosts檔案就自動開啟了 接著輸入 i 進入編輯模式 將新增的 ip拷貝進去 編輯完成之後,按esc,輸入 wq 冒號也要 2.hostswidget修改 mac下有乙個hostsw...