1.MFC打开文件并按行读取文件内容
void CFileDlg::OnBnClickedButtonFileRead()
{
vector<string> v_str;
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle = L"Open File";
fileDlg.m_ofn.lpstrFilter = L"Text Files(*txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
if (IDOK == fileDlg.DoModal())
{
vector<CString> v_cstr;
CStdioFile file;
if (file.Open(fileDlg.GetPathName(), CFile::typeText | CFile::modeRead))
{
CString str;
// 处理UNICODE下【中文乱码】异常
char * pOldLocale = _strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "chs");
while (file.ReadString(str))
{
v_cstr.push_back(str);
str.Empty();
}
// 处理完毕后,释放资源
setlocale(LC_CTYPE, pOldLocale);
free(pOldLocale);
}
file.Close();
m_CtrlEditReadFile.SetWindowText(fileDlg.GetPathName());
}
}
2.MFC保存文件内容,则将上述
void CFileDlg::OnBnClickedButtonFileWrite()
{
CFileDialog FileDlg(FALSE, L"txt", _T("Test"));
FileDlg.m_ofn.lpstrTitle = L"Save File";
FileDlg.m_ofn.lpstrFilter = L"Text Files(*txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
if (IDOK == FileDlg.DoModal())
{
CFile File(FileDlg.GetPathName(),CFile::modeCreate|CFile::modeReadWrite);
char szBufData[100] = {"hello word!"};
//写入文件内容,不包含/0
File.Write(szBufData, strlen(szBufData));
//立即写入,不缓冲
File.Flush();
//文件操作结束关闭
File.Close();
}
}