使用CFile,CArchive,CStdioFile,fstream进行文件操作

2 篇文章 0 订阅

<1>CFile

MFC文件读写的最普通的方法是直接使用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()
虽然这种方法最为基本,但是它的使用繁琐,而且功能非常简单

<2>CArchive

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<<  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.ReadClass();
  //使用CAboutDlg类
  CObject* pObject=mRunClass->CreateObject();
     ((CDialog* )pObject)->DoModal();

<3>CStdioFile

如果你要进行的文件操作只是简单的读写整行的字符串,使用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();
      追加到原有txt文件尾
      mFile.Open(temptxt,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
      if(mFile==NULL)
          return false;
       mFile.SeekToEnd();
       mFile.WriteString(s);
       file.Close();

<4>fstream

fstream是C++中的一个类,它是stream的子类,它的详细操作可以参考http://www.cppblog.com/saga/archive/2007/06/19/26652.html







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值