字体
第(2/5)页
关灯
   存书签 书架管理 返回目录
ockViolation 锁定错误

    CFileException::diskFull 磁盘已满

    CFileException::endOfFile 到达文件末尾

    用户可以在自定义函数中添加自定义语句AfxThrowFileException 以抛出自定义的文件

    异常,例如有一个CSampleFile 类用于指定存取一个有最大长度的文件,这个最大长度设置

    为m_dwMaxLength,如果超出这个长度,就存取失败。下面给出一个写文件的例子,如果写

    入的数据使得文件长度超出m_dwMaxLength,则模拟磁盘满的出错异常。

    //向文件中写入字符串lpszString

    void CSampleFile::WriteString(LPCTSTR lpszString)

    {

    //m_File 是CSampleFile 的成员变量

    DWORD dwLen=m_File.GetLength()+strlen(lpszString)+1;//获得写入后的文件大小

    if (dwLen>m_dwMaxLength)

    AfxThrowFileException(CFileException::diskFull); //抛出磁盘满的异常

    m_File.Write(lpszString,strlen(lpszString)+1); //如果没超过限度,则写入文件

    }

    2.获得文件异常信息

    从第1 部分创建CFileException 异常中可以看出,文件异常有3 类不同的信息,分别由

    3 个成员变量表示。

    ? CFileException::m_cause : int 类型, 获得可移植的出错代码, 这些代码同前面

    AfxThrowFileException()函数的参数cause 的代码相同。

    ? CFileException::m_lOsError:long 类型,获得cāo作系统指定的出错代码。

    ? CFileException::m_strFileNcom:CString 类型,获得出错的文件名。

    下面给出用TRY/CATCH 块获得文件异常信息的示例代码:

    TRY

    {

    //创建文件进行写入

    枫叶文学网www.fywxw.com

    第8 章 文件cāo作

    ·197·

    CFile f( pFileNcom, CFile::modeCreate | CFile::modeWrite );

    }

    CATCH( CFileException, e )

    {

    //文件未找到

    if( e->m_cause == CFileException::fileNotFound )

    TRACE( "ERROR: File not found\n")

    }

    END_CATCH

    8.2.6 管理cāo作

    对文件的cāo作,除了打开文件并进行读写外,还可以进行删除、重命名等cāo作。CFile

    类也为这些cāo作提供了支持。

 
上一页 目录 下一页