MFC文件操作

摘要:
文件操作分为两个步骤:打开和读取/写入。LpszFileName指定默认文件名。LpszFilter是一个重要参数,它指示可用的文件类型和相应的扩展名。CFile::modeNoTruncate:通过追加打开。如果文件存在,请打开它,不要将文件长度设置为零。如果文件不存在,将引发异常。通常与CFile::modeCreate一起使用,当文件不存在时会创建一个新文件;如果存在,则追加。

  文件的操作分为两步,打开和读写。

  打开和读写对应着两个类,分别 CFileDialog 和 CFile.

 

第一步  打开文件对话框操作:

  (1) 文件对话框类    CFileDialog  

  

  (2) 构造方法      CFileDialog::CFileDialog();

  CFileDialog::CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,

              DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,

              LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL);

  参数介绍:

    bOpenFileDialog    为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

    lpszDefExt       指定默认的文件扩展名。 如"jpg"。
    lpszFileName      指定默认的文件名。 如"*.jpg"。

    dwFlags         指明一些特定风格。如:dwFlags= OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT。

                OFN_HIDEREADONLY       隐藏只读复选框。

                OFN_OVERWRITEPROMPT    如果选择的文件已经存在,使用另存为对话框产生一个消息框;

                                 用户必须确认是否复盖这个文件。

    lpszFilter        是很重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:

                "jpg Files (*.jpg)|*.jpg|bin Files (*.bin)|*.bin|All Files (*.*)|*.*||";

                文件类型说明和扩展名间用 | 分隔,每种文件类型间用 | 分隔,末尾用 || 指明。

    pParentWnd       为父窗口指针,一般为空。

  (3) 打开对话框方法    CFileDialog::DoModal(); 用来打开对话框。

  (4) 取得完整文件名方法  CFileDialog::GetPathName();

               得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt。

  

构造和打开对话框用例: 

  char szFilters[]="jpg Files (*.jpg)|*.jpg|bin Files (*.bin)|*.bin|All Files (*.*)|*.*||";
  CFileDialog fileDlg(TRUE, "jpg", "*.jpg",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilters, NULL);

  if( fileDlg.DoModal ()==IDOK )                      //此时,才真正弹出对话框。
  {
    gReadFilePathName = fileDlg.GetPathName();            //得到完整的文件名、目录和扩展名。
    GetDlgItem(IDC_EDIT1)->SetWindowText(gReadFilePathName);  //将文件名、目录和扩展名写回窗口。  
  }

第二步  读写文件操作:    

  (1) 文件类        CFile

  (2) 构造方法       CFile::CFile();

  CFile::CFile(LPCTSTRlpszFileName,UINTnOpenFlags); 

  lpszFileName      文件名

  nOpenFlags        打开方式,有:

              CFile::modeCreate:以新建方式打开,如果文件不存在,新建;

                         如果文件已存在,把该文件长度置零,即清除文件原有内容。

              CFile::modeRead:只读。
              CFile::modeWrite:只写。
              CFile::modeReadWrite:以读写方式打开文件。

              CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。

                            一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。

  用例如下:

    CFile ReadFile(gReadFilePathName,CFile::modeRead);

    CFile SaveFile(gSaveFilePathName,CFile::modeCreate|CFile::modeWrite);

  (3) 只读方法      CFile::Read();

  CFile::Read(void*lpBuf,UINTnCount);   从lpBuf指向的地址开始读取nCount 个字节,指针也自动下移nCount .

  lpBuf          文件指针

  nCount          字节数

  用例如下:

    unsigned char temp;

    ReadFile.Read(&temp,1);

  (4) 只写方法      CFile::Write();

  CFile::Write(constvoid*lpBuf,UINTnCount);   向lpBuf指向的内存地址写入nCount 个字节,指针也自动下移nCount .

  lpBuf          文件指针

  nCount          字节数

  用例如下:

     char ChangRun[2] = {'\r','\n'};

    SaveFile.Write(ChangRun,2);

  (5) 定位方法      CFile::Seek();

  CFile::Seek(LONGlOff,UINTnFrom);    从指定位nFrom置偏移lOff字节.

  nFrom          有三种方式,如:

               CFile::begin     从文件开始移动

               CFile::current    从当前位置移动

               CFile::end        从文件末位移动,此时lOff为负值.

  用例如下:

    SaveFile.Seek(2,CFile::current);


 完。


   

免责声明:文章转载自《MFC文件操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇深入了解Java ClassLoader、Bytecode 、ASM、cglib(II)每一个C#开发者必须知道的13件事情下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Visual C++ MFC/ATL开发-提高篇

MFC简单打印方法通过MFC来完成打印作业有很多的方法,应用场合也有所不同。我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting() à OnBeginPrinting() ? à OnPreprareDC() à OnPrinting () à OnEndPrinting()的顺序来编程的。对于我们使用单文档或者多文档的视图框架...

VC++ MFC子对话框建立与关闭

主窗体 void CMoshiwindowDlg::OnButton1() { // TODO: Add your control notification handler code here CDialogproty dlg; dlg.DoModal(); m_text.SetWindowText(dlg....

创建最简单的exe形式COM组件并在MFC程序调用

来新公司学习接手新项目,拿到代码打开解决方案看到里面竟然有40几个工程,有点吃惊。具体看代码也有很多之前没见过的写法,上了几天火。 有件事就没太搞明白,按照文档的说法上层很多软件都要调用IO服务器,但看程序安装目录,IO服务器其实是一个exe程序,按照我之前的印象,能被别的程序调用的也得是动态库、静态库或者服务。实在想不通exe程序怎么作为接口被别的程序调...

centos7 tar.gz zip 解压命令

centos7 tar.gz zip 解压命令 tar负责打包,gzip负责压缩 tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的-j:有bz...

http长链接

之前说过http的请求是再tcp连接上面进行发送的,那么tcp连接就分为长连接 和 短连接这样的概念,那么什么是长链接呢?http请求发送的时候要先去创建一个tcp的连接,然后在tcp的连接上面发送http请求,请求完以后,客户端会跟服务端商量要不要关闭这个连接,有时候这个创建关闭的过程比保持长链接还要消耗资源 怎么判断这个请求是否是长链接呢,req,re...

MFC 扫雷

花了两天时间做了一个MFC的扫雷,简单的实现了扫雷的功能,界面很草小毛病很多(比如标题。。),还望大家多多指正。 开发工具: VS2008 代码:https://files.cnblogs.com/GhostZCH/FindMine.rar 界面如下,红色的是标记,绿色的是还没有打开的各种,黄色的是已经打开的,红星是地雷(原谅程序的丑陋,唉,我也不是做美工...