WinCE文件基本操作
WinCE 下对文件的基本操作
WinCE对文件操作有两种方式:一种是用WinCE自带的API函数,另一种方法是用MFC类库种的CFile类。
我们先用第一种的操作:
1. 文件的打开
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesireAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDispostion,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
以上参数比较多,这个在EVC下有帮助,可以查到。可以举个例子:
HANDLE hFile;
hFile = CreateFile(_T(“\\My Documents\\MYFILE.TXT”),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
If(hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T(“打开失败”));
return;
}
2. 文件的关闭
文件使用完之后就应该及时关闭,以释放对它的资源
BOOL CloseHandle(HANDLE hObject);
比如说上例中
CloseHandle(hFile);
3. 文件的读写
文件的读
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
NULL);
最后一个参数在WINCE下是不支持的,所以一般用NULL.
文件的写
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesWritten,
NULL);
最后一个参数在WINCE下是不支持的,所以一般用NULL.
4. 文件指针的移动
DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod);
例如:
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
5. 获取和设置文件信息
DWORD GetFileAtrribute(LPSTSTR lpFileName);
参数表示文件名或者目录名
DWORD SetFileAttributes(LPCTSTR lpFileName,DWORD dwFileAttributes);
6. 获取和设置文件时间
BOOL GetFileTime(
HANDLE hFile,
LPFILETIME lpCreationTime,
LPFILETIME lpLastAccessTime,
LPFILETIME lpLastWriteTime);
BOOL SetFileTime(
HANDLE hFile,
const FILETIME *lpCreationTime,
const FILETIME *lpLastAccessTime,
const FILETIME *lpLastWriteTime);
7. 获取文件大小
DWORD GetFileSize(HANDLE hFile, NULL);
第二种操作:使用MFC库
1. 文件的打开
CFile( LPCTSTR lpszFileName, UNIT nOpenFlags);
或者使用CFile::Open函数
Virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError =NULL);
2. 文件的关闭
直接调用Close()方法就可以了,比如说file.Close();
3. 文件的读写
Virtual UNIT Read( void* lpBuf, UNIT nCount);
其中注意nCount是从文件中读取的最大的数据量,返回的是实际的读取的数据量,可能小于nCount的值。
Virtual void Write(const void * lpBuf, UNIT nCount);
4. 文件指针的移动
Virtual LONG Seek(LONG lOff, UINT nFrom); lOff表示偏移量,nFrom表示计算方式。
Void SeekToBegin();
Void SeekToEnd();
WinCE
我们先用第一种的操作:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesireAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDispostion,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
以上参数比较多,这个在EVC
HANDLE hFile;
hFile = CreateFile(_T(“\\My Documents\\MYFILE.TXT”),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
If(hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T(“
return;
}
文件使用完之后就应该及时关闭,以释放对它的资源
BOOL CloseHandle(HANDLE hObject);
比如说上例中
CloseHandle(hFile);
文件的读
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
NULL);
最后一个参数在WINCE
文件的写
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesWritten,
NULL);
最后一个参数在WINCE
DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod);
例如:
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
DWORD GetFileAtrribute(LPSTSTR lpFileName);
参数表示文件名或者目录名
DWORD SetFileAttributes(LPCTSTR lpFileName,DWORD dwFileAttributes);
BOOL GetFileTime(
HANDLE hFile,
LPFILETIME lpCreationTime,
LPFILETIME lpLastAccessTime,
LPFILETIME lpLastWriteTime);
BOOL SetFileTime(
HANDLE hFile,
const FILETIME *lpCreationTime,
const FILETIME *lpLastAccessTime,
const FILETIME *lpLastWriteTime);
DWORD GetFileSize(HANDLE hFile, NULL);
第二种操作:使用MFC
CFile( LPCTSTR lpszFileName, UNIT nOpenFlags);
或者使用CFile::Open
Virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError =NULL);
直接调用Close()
Virtual UNIT Read( void* lpBuf, UNIT nCount);
其中注意nCount
Virtual void Write(const void * lpBuf, UNIT nCount);
Virtual LONG Seek(LONG lOff, UINT nFrom); lOff
Void SeekToBegin();
Void SeekToEnd();