7,540
社区成员
发帖
与我相关
我的任务
分享
// 定义结构
struct structFile
{
CString strName;
UINT32 nSize;
PBYTE pData;
}
// 假设十个文件
structFile Files[10];
// 二进制方式读文件
CFile file;
CFileException e;
BOOL bOk = file.Open("C:\\abc\\yourname.txt",CFile::modeRead|CFile::typeBinary,&e);
if (!bOk)
{
if(CFileException::badPath == e.m_cause)
{
TRACE("错误文件路径\n");
return;
}
}
int iLen = file.GetLength();
PBYTE pData = new BYTE[iLen];
file.ReadHuge(pData,iLen);
delete [] pData;
// 解析文件
PBYTE p = pData;
for( int i = 0; i < 10; i++ )
{
Files[i].strName = PCTSTR(p); // 取文件名,以零结尾。
p += strName.GetLength() + 1; // 文件名长度,这一句和字符编码有关,如果是unicode码,乘以2
Files[i].nSize = UINT32( p ); // 数据长度
p += sizeof(UINT32); // 移动到数据
Files[i].pData = p; // 指向数据
p += Files[i].nSize; // 移到下一个文件
}
以下代码假设文件名是变长的,以0结尾,多字节编码方式。