MFC 打开路径带有中文名的文件
2014-05-15 19:13
260 查看
最近在做一个小程序,就是要读取文件进行数据解析,打开文件要使用fopen来实现。但是文件的路径中存在汉字,从而导致使用fopen打开改文件失败的问题,由于不经常使用,花了很久时间才解决了这个问题,于是想把该问题的解决方法记录下来。以下是两种实现方法:
(1)使用_wfopen来实现:
将获取的路径名和文件名的字符串(CString类型)转换为wchar_t类型,如:
CString strPathName;/*获取到的文件名*/
wchar_t *FileName =NULL;
FILE *pFile = NULL;
CFileDialog dlg(TRUE, //TRUE为OPEN对话框,FALSE为SAVE AS对话框
NULL,
NULL,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
//文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,
//每种文件类型间用 | 分隔,末尾用 || 指明
// (LPCTSTR)_TEXT("JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),
(LPCTSTR)_TEXT("TXT Files (*.txt)|*.txt||"),
NULL);
dlg.m_ofn.nFilterIndex = 1;
dlg.m_ofn.hwndOwner = m_hWnd;
dlg.m_ofn.lStructSize = sizeof(OPENFILENAME);
dlg.m_ofn.lpstrTitle = TEXT("打开文本文件...\0");
dlg.m_ofn.nMaxFile = MAX_PATH;
if(dlg.DoModal()==IDOK)
{
FilePathName = dlg.GetPathName(); //文件名保存在了FilePathName里
}
FileName = strPathName.AllocSysString();
pFile = _wfopen((const wchar_t*)pbyConfigName, L"rb");
SysFreeString(FileName ); // 注意,用完后释放内存!
(2)创建一个用于打开文件的对象的方式:
CFile file.open((LPCTSTR)strPathName, CFile::modeRead, NULL);
(1)使用_wfopen来实现:
将获取的路径名和文件名的字符串(CString类型)转换为wchar_t类型,如:
CString strPathName;/*获取到的文件名*/
wchar_t *FileName =NULL;
FILE *pFile = NULL;
CFileDialog dlg(TRUE, //TRUE为OPEN对话框,FALSE为SAVE AS对话框
NULL,
NULL,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
//文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,
//每种文件类型间用 | 分隔,末尾用 || 指明
// (LPCTSTR)_TEXT("JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),
(LPCTSTR)_TEXT("TXT Files (*.txt)|*.txt||"),
NULL);
dlg.m_ofn.nFilterIndex = 1;
dlg.m_ofn.hwndOwner = m_hWnd;
dlg.m_ofn.lStructSize = sizeof(OPENFILENAME);
dlg.m_ofn.lpstrTitle = TEXT("打开文本文件...\0");
dlg.m_ofn.nMaxFile = MAX_PATH;
if(dlg.DoModal()==IDOK)
{
FilePathName = dlg.GetPathName(); //文件名保存在了FilePathName里
}
FileName = strPathName.AllocSysString();
pFile = _wfopen((const wchar_t*)pbyConfigName, L"rb");
SysFreeString(FileName ); // 注意,用完后释放内存!
(2)创建一个用于打开文件的对象的方式:
CFile file.open((LPCTSTR)strPathName, CFile::modeRead, NULL);
相关文章推荐
- MFC如何打开文件路径
- MFC 打开保存对话框 获取保存文件路径 {无错版} vs 2010
- 解决fstream不能打开带有中文路径文件的问题
- 在vc中用MFC按纽打开一个txt文件,在旁边的文本框里显示文件的路径的方法
- 在vc中用MFC按纽打开一个txt文件,在旁边的文本框里显示文件的路径的方法??
- MFC打开一个对话框 要求获取文件路径的代码
- MFC打开文件选择框和多选框,保存文件夹的选择,保存文件路径的选择
- 解决fstream不能打开带有中文路径文件的问题
- 有时候用ifstream或ofstream打开带有中文路径的文件会失败。 解决办法
- Visual C++(MFC) 打开文件 获取文件路径 详解
- MFC获取打开目录路径和获取文件路径
- 英文版XP不能打开带有中文路径的chm文件的解决办法
- MFC的...打开一个对话框 要求获取文件路径的代码
- 解决VS2005中fstream不能打开带有中文路径文件的问题
- 英文版XP不能打开带有中文路径的chm文件的解决办法
- MFC获取打开目录路径和获取文件路径
- ifstream或ofstream打开带有中文路径的文件失败解决方法
- MFC 文件打开对话框(CFileDialog类或OPENFILENAME结构体)后,保持程序的路径不变
- MFC如何打开文件路径
- 在MFC中选择要打开文件的路径