MFC CFile CStdioFile文件学习

CFile类

1、特点

(1)    MFC中文件类的基类。

(2)    二进制(字节)读写。

(3)    带参数的构造函数自动打开文件,析构自动关闭文件。

(4)    文件打开方式组合:5个类别 = 读写+字符+共享+创建+缓存

    a) 读写(access mode):modeRead(默认)、modeWrite、modeReadWrite

    b) 字符(character mode):typeBinary、typeText、typeUnicode

        CFile只处理二进制文件,字符模式只用于派生类中。

         typeUnicode用于字符配置为Unicode的应用程序。

    c) 共享(share mode):shareDenyNone、shareDenyRead、shareDenyWrite、shareExclusive(独占,默认)

    d) 创建(creation mode):modeCreate(覆盖)、modeNoTruncate(附加,默认)

        共同点:没有则创建。

        区别:文件存在modeCreate 覆盖,modeNoTruncate附加。

   e) 缓存(caching mode):osNoBuffer、osRandomAccess、osSequentialScan、osWriteThrough

       默认系统使用通用缓冲方案,该方案不作为选项。

2、公共方法:

(1)    Open

    a) 通过返回值判断是否成功。

    b) 示例:

CFile MyFile;

if( !MyFile.Open( "no_such_a_file", CFile::modeRead) )

{
   AfxMessageBox( "open error!" );
}

 

(2)    Abort、Close关闭文件

    a) 区别:Abort关闭文件会忽略异常,并且不会发生中断。

(3)    Duplicate构造重复的文件对象。

(4)    Flush刷新缓存区,强制输出缓存区内容。

(5)    LockRange、UnlockRange:锁定文件中指定区域内容,禁止其他线程访问。

(6)    Read、write字节读写

(7)    Remove删除

(8)    Rename重命名

(9)    Seek、seektobegin、seektoend文件定位

(10)  获取文件信息:GetFileName、GetFilePath、GetFileTitle、GetLength、GetPosition、GetStatus。

(11)  设置更改文件信息:SetFilePath、SetLength、SetStatus。

3)      公共数据成员

(1)    hFileNull确定是否有合法句柄

(2)    m_hFile文件句柄

4)      示例:

(1)    在构造时打开文件。

try

{

   CFile sysFile(_T("C:\\WINDOWS\\SYSTEM.INI"), CFile::modeRead);

   sysFile.Close();

}

catch (CFileException* pEx)

{

   pEx->ReportError();

   pEx->Delete();

}

(2)    使用open打开文件。

CFile MyFile;

if( !MyFile.Open( "no_such_a_file", CFile::modeRead) )

{

   AfxMessageBox( "open error!" );

         MyFile.abort();

   Return;

}

try

{//文件操作

}

catch (CFileException* pEx)

{

   pEx->ReportError();

   pEx->Delete();

}

CStdioFile类

1、特点

(1)继承CFile;

(2)可以按行读写文本:ReadString、WriteString;

(3)WriteString向文件中写文本时,需要添加换行符“\n”。

     注:WriteString会自定补全回车换行符,即将“\n”或"\r"都会自动转换为"\r\n",如果添加了"\r\n",则会自动转换为"\r\n\r\n"

(4)其他用法参考CFile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值