vc打开并读取txt文件


  让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类“CFileDialog”用于实现这种功能。使用“CFileDialog”声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。  
  
  在构造“CFileDialog”对象时,如果在参数中指定了“OFN_ALLOWMULTISELECT”风格,则在此对话框中可以进行多选操作。此时要重点注意为此“CFileDialog”对象的“m_ofn.lpstrFile”分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。  
  
CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY|OFN_OVER  
WRITEPROMPT|OFN_ALLOWMULTISELECT,“All Files (*.*)|*.*| |”, AfxGetMainWnd());  
CString str(“ ”, 10000);  
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);  
str.ReleaseBuffer();  
POSITION mPos=mFileDlg.GetStartPosition();  
CString pathName(“ ”, 128);  
CFileStatus status;  
while(mPos!=NULL)  
{  
 pathName=mFileDlg.GetNextPathName(mPos);  
 CFile::GetStatus(pathName, status);  
}  
  
   3. 文件的读写  
  
  文件的读写非常重要,下面将重点进行介绍。文件读写最普通的方法是直接使用“CFile”类进行,如文件的读写可以使用下面的方法:  
  
//对文件进行读操作  
char sRead[2];  
CFile mFile(_T(“user.txt”),CFile::modeRead);  
if(mFile.GetLength()<2)  
 return;  
mFile.Read(sRead,2);  
mFile.Close();  
//对文件进行写操作  
CFile mFile(_T(“user.txt”), CFile::modeWrite|CFile::modeCreate);  
mFile.Write(sRead,2);  
mFile.Flush();  
mFile.Close();  
  
  虽然这种方法最为基本,但是它使用烦琐,而且功能非常简单。这里推荐的是使用“CArchive”,它的使用方法简单且功能十分强大。首先还是用“CFile”声明一个对象,然后用这个对象的指针做参数声明一个“CArchive”对象,这样就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例:  
  
//对文件进行写操作  
CString strTemp;  
CFile mFile;  
mFile.Open(“d://dd//try.TRY”,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);  
CArchive ar(&mFile,CArchive::store);  
ar<<strTemp;  
ar.Close();  
mFile.Close();  
//对文件进行读操作  
CFile mFile;  
if(mFile.Open(“d://dd//try.TRY”,CFile::modeRead)==0)  
 return;  
CArchive ar(&mFile,CArchive::load);  
ar>>strTemp;  
ar.Close();  
mFile.Close();  
  
   “CArchive”的“<<”和“>>”操作符用于简单数据类型的读写,对于“CObject”派生类的对象的存取要使用ReadObject()和WriteObject()。使用“CArchive”的ReadClass()和WriteClass()还可以进行类的读写,如:  
  
//存储CAboutDlg类  
ar.WriteClass(RUNTIME_CLASS(CAboutDlg));  
//读取CAboutDlg类  
CRuntimeClass*mRunClass=ar.Read  
Class();  
//使用CAboutDlg类  
CObject* pObject=mRunClass->CreateObject();  
((CDialog* )pObject)->DoModal();  
  
  虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、使用和管理,如果要进行的文件操作只是简单的读写整行的字符串,建议使用“CStdioFile”,用它来进行此类操作非常方便,如下例:  
  
CStdioFile mFile;  
CFileException mExcept;  
mFile.Open( “d://temp//aa.bat”, CFile::modeWrite, &mExcept);  
CString string=“I am a string.”;  
mFile.WriteString(string);  
mFile.Close();  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值