二进制文件读写问题
我已经成功地写入一个二进制文件,现在需要把它读出来,请教如何操作?
下面是我的代码,谢谢!
void CFileOperDlg::OnRead()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
BeginWaitCursor();
CFile m_File;
CString m_FilePath = _T("EnterMIS.cfg");
if(!m_File.Open(m_FilePath,CFile::modeRead|CFile::typeBinary))
{
EndWaitCursor();
AfxMessageBox(_T("打开文件出错"));
return;
}
try
{
m_File.SeekToBegin();
m_File.Read(&m_ConnInfo, sizeof(ConnInfo));
}
catch(...)
{
m_File.Close();
EndWaitCursor();
AfxMessageBox(_T("文件操作出错"));
return;
}
m_UserR = m_ConnInfo.strUser;
m_PasswordR = m_ConnInfo.strPassword;
m_DataBaseR = m_ConnInfo.strDataBase;
m_ServerR = m_ConnInfo.strServer;
EndWaitCursor();
UpdateData(FALSE);
}
void CFileOperDlg::OnWrite()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
BeginWaitCursor();
if(m_User.IsEmpty() || m_Password.IsEmpty() || m_Server.IsEmpty() || m_DataBase.IsEmpty())
{
EndWaitCursor();
AfxMessageBox(_T("对不起,信息不完整!"));
}
m_ConnInfo.strUser = m_User;
m_ConnInfo.strPassword = m_Password;
m_ConnInfo.strDataBase = m_DataBase;
m_ConnInfo.strServer = m_Server;
CFile m_File;
CString m_FilePath = _T("EnterMIS.cfg");
if(!m_File.Open(m_FilePath,CFile::modeCreate|CFile::modeReadWrite|CFile::typeBinary))
{
EndWaitCursor();
AfxMessageBox(_T("打开文件出错"));
return;
}
try
{
m_File.SeekToBegin();
m_File.Write(&m_ConnInfo,sizeof(m_ConnInfo));
}
catch(...)
{
m_File.Close();
EndWaitCursor();
AfxMessageBox(_T("文件操作出错"));
return;
}
EndWaitCursor();
}
上面代码已经成功写入,当点击写入之后,立即读出,则没有问题,但重新运行程序,只点读入的时候,出现无效的访问地址,DEBUG诊断时发现根本没有读入任何数据!