typedef struct
{
int length;
char * data;
}FILEDATA;
//读文件 //m_filePath是一个文件路径数组总共三个文件
FILEDATA fileItem[4];
for(int i = 0; i < sizeof(m_filePath)/ sizeof(m_filePath[0]); i++)
{
if(m_filePath[i].IsEmpty())
{
continue;
}
CFile file;
if(file.Open(m_filePath[i],CFile::modeRead | CFile::typeBinary))
{
file.Seek(0, CFile::begin);fileItem[i].length = file.GetLength();fileItem[i].data = new BYTE[fileItem[i].length + 1];
while(file.Read(fileItem[i].data,1))
{
fileItem[i].data++;//这里读是正常的
}
file.Close();
}
}
//写入各个文件
for(int i = 0;i < sizeof(m_filePath)/ sizeof(m_filePath[0]);i++)
{
if(m_filePath[i].IsEmpty())
{
continue;
}
inFile.Write(fileItem[i].data,fileItem[i].length);//第一个文件写成功了,可是在写第二个文件时出现问题,弹出对话框:访问XX(XX是写的那个文件)出现未知错误
}CFile写文件
{
int length;
char * data;
}FILEDATA;
//读文件 //m_filePath是一个文件路径数组总共三个文件
FILEDATA fileItem[4];
for(int i = 0; i < sizeof(m_filePath)/ sizeof(m_filePath[0]); i++)
{
if(m_filePath[i].IsEmpty())
{
continue;
}
CFile file;
if(file.Open(m_filePath[i],CFile::modeRead | CFile::typeBinary))
{
file.Seek(0, CFile::begin);fileItem[i].length = file.GetLength();fileItem[i].data = new BYTE[fileItem[i].length + 1];
while(file.Read(fileItem[i].data,1))
{
fileItem[i].data++;//这里读是正常的
}
file.Close();
}
}
//写入各个文件
for(int i = 0;i < sizeof(m_filePath)/ sizeof(m_filePath[0]);i++)
{
if(m_filePath[i].IsEmpty())
{
continue;
}
inFile.Write(fileItem[i].data,fileItem[i].length);//第一个文件写成功了,可是在写第二个文件时出现问题,弹出对话框:访问XX(XX是写的那个文件)出现未知错误
}CFile写文件
读取时,获取总数据+总数据长度,就可以了!inFile.fseek到末位试试看
{
fileItem[i].data++;//这里读是正常的
}
这里干嘛一字节一字节的读呢? 太慢了吧 inFile.Write(fileItem[i].data,fileItem[i].length); 这里前面有Open?
{
//open文件
if(m_filePath[i].IsEmpty())
{
continue;
}
inFile.Write(fileItem[i].data,fileItem[i].length);// close文件 而且你不管read还是write最好判断下返回值看下真实读写是多少...
}