您的位置:首页 > 科技 > IT业 > 策划一场活动的流程_客厅装修设计_搜索引擎优化解释_私人网站服务器

策划一场活动的流程_客厅装修设计_搜索引擎优化解释_私人网站服务器

2024/12/22 23:18:09 来源:https://blog.csdn.net/m0_72128260/article/details/144381704  浏览:    关键词:策划一场活动的流程_客厅装修设计_搜索引擎优化解释_私人网站服务器
策划一场活动的流程_客厅装修设计_搜索引擎优化解释_私人网站服务器

       为方便对文件操作,MFC提供了CFile类用于文件的读写操作,具体包括文件数据的读取、写入以及文件内部指针的移动等。打开文件时,会有一个指向该文件的指针,同时还生成一个指向具体数据的内部指针,用于记录读取或写入的位置,文件刚打开时,内部指针指向文件开始位置,随着读或写的操作,内部指针会自动移动位置。内部指针移动可通过相关函数进行,移动的单位为字节。
一、使用CFile操作文件的步骤:
(一)、构造CFile类对象
         CFile 参1; //参1 CFile对象名
(二)、调用CFile::Open()函数创建或打开指定文件
          格式:file.open( 
                            LPCTSTR lpszFileName, 
                            UINT nOpenFlags, 
                            CFileException* pError = NULL );
                 参1 文件名(可包含路径,只有文件名,默认为项目目录)
                 参2 文件打开模式,取值包括:
                        CFile::modeCreate //创建新文件,如文件已存在,则将长度变成0
                        CFile::modeNoTruncate  //创建新文件,如果文件已存在,写入内如追加在最后
                        CFile::modeRead //以只读方式打开文件
                        CFile::modeReadWrite //以读写方式打开文件
                        CFile::modeWrite //以只写方式打开文件
                        CFile::typeText //以文本方式打开文件
                        CFile::typeBinary //以二进制方式打开文件
                 参3 pError //打开失败时用来接收失败信息,一般使用其默认值NULL
(三)、调用CFile::Write()函数写入文件
          使用格式:
              CFile::Write( 
                        const void* lpBuf,
                        UINT nCount)
                 参1 准备写入的字符串变量指针
                 参2 写入的字节数
         说明:
         a. Write()是CFile类对象成员函数,需要CFile类对象或指针调用。
         b. 参1 lpBuf是指向写入数据的指针,类型可以是char*或TCHAR*。如要写入的内容在CString对象中,应先将其转为char*或TCHAR*。如希望使用CString对象的成员函数GetLength获取字符串长度来计算参2所用的字节数,应注意在UNICODE字符集下使用TCHAR每个字符的字节数是2(所谓宽字符)。类似的CFile类对象也有一个同名函数GetLength,得到的结果是字节数,宽字符条件下换成字符数要除以2;这两个函数要注意区别。
        c.鉴于参1的类型,写入的内容都是字符串,无论是char*还是TCHAR*。因此,每次写入都是一个字符串;如字符串中包结束符"\0",即使未超过参2的字节数,但结束符后边的内容也不会被写入文件。
        d.如果是写入数组,合理的做法是开循环,一次只写入一个元素的长度,分次写入。如果是自定义类数组,也是开循环,在循环内将自定义类的各个属性再转成字符串后分次写入。
(四)、调用CFile::Read()读取文件
       使用格式:
             CFile::Read(
                   void* lpBuf,
                  UINT nCount ) 
             参1:lpBuf是用于接收读取到的字符串的指针
             参2:nCount是从文件读取的字节数
     说明:
     a.CFIle::Read函数是CFile类的成员函数,需要CFile对象或指针调用。
     b.参2可通过CFile::GetLength()获得(字节数)。
     c.如果文件中的数据是数组,读取方法是把上面介绍的写入方法反过来。具体是提前定义好一个接收数组,然后按数组元素个数开循环,读取后转成需要的类型依次存入数组;如是自定义类数组,在循环中读取各属性后转成需要的类型存入数组。
     d.TCHAR与相关类型转换函数:
        CString类型转成TCHAR[]的函数:wcscpy_s(tchar*,cstring)
        int转成TCHAR字符串函数:wsprintf(tchar*,L"格式字符串",int)
        TCHAR字符串可直接赋值给CString对象:CString a=(TCHAR[]) b
        TCHAR字符串转int:int=_wtoi(TCHAR* pTchar)
(五)、调用CFile::Close()关闭
      使用格式:
          CFile::Close(); //无参
      说明:
      a. CFile::Close()是CFile类的成员函数,需CFile类对象或指针调用。
      b. Close对应的是Open函数,CFile类对象还在,我们仍可以使用Open函数重新打开或打开其它文件。
二、CFile类的其它成员函数
    CFile::Flush();
      功能:刷新待写的数据
      参数:无
    CFile::GetLength();
      功能:获取文件的大小
      参数:无
      返回值:无符号长整型类型的从文件开始至文件尾的字节数
    CFile::Seek(参1,参2);
      功能:定位文件内部指针指向指定位置
      参数:
          参1 偏移量(单位:字节),负值表示向回移动
          参2 起始位置(取值:CFile::begin,CFile::current,CFile::end)
      返回值:返回从文件开始位置至移动后位置的字节数
    CFile::SeekToBegin();
      功能:定位文件内部指针至文件头
      参数:无
      返回值:无
    CFile::SeekToEnd();
      功能:定位文件内部指针至文件尾
      参数:无
      返回值:返回文件长度(字节数),类型为无符号长整形
    CFile::GetFileName();
      功能:获取文件名
      参数:无
      返回值:返回CString类型的文件名字符串
    CFile::GetFilePath();
      功能:获取文件路径及文件名
      参数:无
      返回值:返回CString类型的字符串
    CFile::GetPosition();
      功能:获得当前文件内部指针的读写位置
      参数:无
      返回值:返回无符号长整型(DWORD)类型的内部指针位置
   CFile:: GetStatus();
      功能:取当前文件的状态
      参数:CFileStatus对象
      返回值:成功返回true,失败返回false
      说明:CFileStatus对象的属性包括,m_ctime文件创建的时间、m_mtime文件最后一次修改的时间、m_atime最后一次访问文件并读取的时间、m_size文件逻辑长度(以字节数表示)、m_attribute文件属性字节、m_szFullName[_MAX_PATH]全文件名。
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com