字体
第(1/5)页
关灯
   存书签 书架管理 返回目录
    个没有参数的构造函数。

    CFile::Open()函数的原型为:

    virtual BOOL Open(

    LPCTSTR lpszFileNcom,

    UINT nOpenFlags,

    CFileException* pError = NULL

    );

    该函数的第一个参数和第二个参数跟CFile 的构造函数中的对应参数意义相同。而第三

    个参数可以获得打开文件失败产生的CFileException 对象的指针,这样就可以获得打开失败

    的具体原因,CFileException 类将在8.2.5 小节中叙述。同时,CFile::Open()函数的返回值还

    给出了打开cāo作是否成功。当返回FALSE 时,打开失败,就可以用pError 获得失败的原因。

    而如果pError 为NULL 时,则不会获得CFileException 对象。

    8.2.2 读写cāo作

    打开文件后就可以用读写cāo作对文件数据进行读写。本节开头提到CFile 是一个通用的

    二进制文件cāo作接口,故通过CFile 只能以二进制方式读写文件。CFile 的读写cāo作主要通过

    CFile::Read()和CFile::Write()函数完成。

    CFile::Read()函数用于从文件中读取数据,原型为:

    virtual UINT Read(

    void* lpBuf,

    UINT nCount

    );

    CFile::Write()函数用于向文件写入数据,原型为:

    virtual void Write(

    const void* lpBuf,

    UINT nCount

    );

    这两个函数具有同样的参数。

    枫叶文学网www.fywxw.com

    第8 章 文件cāo作

    ·191·

    ? 参数lpBuf:指向用户提供的缓冲区以接收从文件中读取的数据。

    ? 参数nCount:给出可以从文件中读出或者向文件中写入的字节数的最大值。对于文本

    模式的文件,回车换行只作为一个字符。

    ? Read()函数返回值:用于获得传输到缓冲区的字节数。如果到达文件尾,则返回值可

    能比nCount 小。

    下面给出PersonData 示例中读文件的语句(在CPersonDataDlg::InitDialog()函数中):

    //读取个人信息数据

    int result; //获得返回值

    PersonInfo pi; //用户信息缓冲区

    //循环知道读入的数据字节数为0

    while (result=m_File.Read(&pi,sizeof(PersonInfo)))

    {

    //在列表中添加人名

    m_PersonList.AddString(pi.szNcom);

    }

    上述代码中m_File 是一个已经打开文件的CFile 对象,代码循环从文件中读取PersonInfo

    结构,并送至pi 变量中,
上一章 目录 下一页