WinCE下可用的三种不同的文件操作API

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) 
{ 
char buffer[1024]; 
file.Seek (10L, CFile::begin); 
DWORD readCount = file.Read(fileBuffer, 1024); // 返回实际读到的字节数 
} 
file.Close (); 

方法二 
基于C的使用FILE结构体 
打开文件使用_wfopen,原型如下: 
FILE *_wfopen( const wchar_t *filename, const wchar_t *mode ); 
第二个参数是打开模式,这里有很多,比如r,w,r+等等,意义如下: 
"r" 以只读方式打开文件,文件不存在将打开失败 
"w" 以只写方式打开文件,如无文件生成新文件,如果文件已存在,将被破坏 
"a" 以追加的方式打开文件,如果文件不存在,将自动创建一个新文件,已经存在的文件EOF标志将不动。 
"r+" 以读/写方式打开文件,文件不存在将打开失败 
"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是移动的基准,表示从哪开始移动文件指针,取值如下: 
符号常量 值 基准位置 
SEEK_SET 0 文件开头 
SEEK_CUR 1 当前读写的位置 
SEEK_END 2 文件尾部 
例: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)) 
                        { 
                                x = fwrite(buffer, 1, 1024, fp); 
                                fflush (fp); 
                        } 
fclose (fp); 

方法三 
采用WinCE的API 
1.  文件的打开CreateFile 
以上参数比较多,这个在EVC下有帮助,可以查到。可以举个例子: 
HANDLE hFile = CreateFile (pFileName, 
                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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值