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写文件

解决方案 »

  1.   

    如果多个文件写如到一个文件中,读取全部数据,一起写入就可以了!!
    读取时,获取总数据+总数据长度,就可以了!inFile.fseek到末位试试看
      

  2.   

    while(file.Read(fileItem[i].data,1))
    {
    fileItem[i].data++;//这里读是正常的
    }
    这里干嘛一字节一字节的读呢? 太慢了吧  inFile.Write(fileItem[i].data,fileItem[i].length); 这里前面有Open?
      

  3.   

    for(int i = 0;i < sizeof(m_filePath)/ sizeof(m_filePath[0]);i++)
    {
    //open文件
    if(m_filePath[i].IsEmpty())
    {
    continue;
    }
    inFile.Write(fileItem[i].data,fileItem[i].length);// close文件 而且你不管read还是write最好判断下返回值看下真实读写是多少...
    }