MFC文件操作:
1、写文件
void CFileView::OnFileWrite()
{
// TODO: 在此添加命令处理程序代码
//方法一
/*//FILE *pFile = fopen("1.txt" , "w") ;
//pFile = fopen_s()
FILE *pFile ;
fopen_s(&pFile , "1.txt" , "w") ;
fwrite("www.baidu.com" , 1 , strlen("www.baidu.com") , pFile) ;
//fseek(pFile , 0 , SEEK_SET) ;
//fwrite("testzengjia" , 1 , strlen("testzengjia") , pFile) ;
fclose(pFile) ;*/
// 方法二
// ofstream ofs("2.txt") ;
// ofs.write("www.baidu.com" , strlen("www.baidu.com")) ;
// ofs.close() ;
//方法三
/*HANDLE hFile ;
hFile = CreateFile(TEXT("3.txt") , GENERIC_WRITE ,
0 , NULL ,CREATE_NEW , FILE_ATTRIBUTE_NORMAL ,
NULL) ;
DWORD dwNum ;
WriteFile(hFile , TEXT("http:www.baidu.com") ,
sizeof(TCHAR) * strlen("http:www.baidu.com") , &dwNum , NULL) ;
CloseHandle(hFile) ;//strlen在此返回的是字符数Unicode编码*/
//方法四
CFile file(TEXT("4.txt") , CFile::modeCreate | CFile::modeWrite) ;
file.Write(TEXT("www.baidu.com") , sizeof(TCHAR) * strlen("www.baidu.com")) ;
file.Close() ;
}
2、读文件
void CFileView::OnFileRead()
{
// TODO: 在此添加命令处理程序代码
//方法一
/*FILE *pFile ;
fopen_s(&pFile , "1.txt" , "r") ;
char str[100];
fseek(pFile , 0 , SEEK_END) ;
int len = ftell(pFile) ;
rewind(pFile) ;
fread(str , 1 , len , pFile) ;
str[len] = '\0' ;
CClientDC dc(this) ;
dc.TextOut(0 ,0 , (CString)str) ;
fclose(pFile) ;*/
//方法二
/*ifstream ifs("2.txt") ;
char str[100] ;
memset(str , 0 , 100) ;
ifs.read(str , 100) ;
ifs.close() ;
MessageBox((CString)str) ;*/
//方法三
/*HANDLE hFile ;
hFile = CreateFile(TEXT("3.txt") , GENERIC_READ , 0 ,
NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL) ;
TCHAR szBuffer[100] ;
DWORD dwNum ;
ReadFile(hFile , szBuffer , 100 , &dwNum , NULL) ;
szBuffer[dwNum/2] = '\0' ;//szBuffer是按字符计数 , dwNum是按字节计数
CloseHandle(hFile) ;
MessageBox(szBuffer) ;*/
//方法四
CFile file(TEXT("4.txt") , CFile::modeRead) ;
UINT len = file.GetLength() ;
TCHAR *szBuffer ;
szBuffer = new TCHAR[len / 2 + 1] ;
file.Read(szBuffer , len) ;
szBuffer[len / 2] = 0 ;
file.Close() ;
MessageBox(szBuffer) ;
}
注意:在VS2012中strlen()等求出的是字符数,注意区分新旧版本中字符与字节,现在基本都用Unicode编码,每个字符占用两个字节。