65.9K
CodeProject 正在变化。 阅读更多。
Home

CTextFile:一个方便的助手

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.62/5 (27投票s)

2004年3月22日

公共领域

4分钟阅读

viewsIcon

200374

downloadIcon

2658

一个用于读取、写入和追加文本文件的小助手类。

引言

虽然这个类可能不是最令人印象深刻的,但它至少很有用。它允许您从 CStringCStringArray 读取、写入和追加文本文件,还可以加载和保存到列表框和编辑框。虽然它不足以管理应用程序中的数据,但可用于配置文件、开发过程中的文本转储以及其他此类小任务。而且——如果您在任何成员调用中没有提供文件名,它会弹出一个文件对话框。

使用代码

实例化一个 CTextFile 然后开始使用吧!这是一个例子

CString str("");
CTextFile tf("gnu");
  if( !tf.Save( str, m_editLoad ) )
    if( str.GetLength() )
      AfxMessageBox( tf.GetErrorMessage() );

它保存了编辑框 m_edit 的内容。由于 str(文件名)是空的,CTextFile 将显示一个文件对话框,并且在返回时 str 将包含选定的文件名。

在构造函数中,可以指定扩展名和行结束符。扩展名默认为 "",行结束符默认为 "\r\n"。当显示标准文件对话框时,扩展名将用于过滤文件。对行结束符有限的支持包括将文件读取到单个 CString,以及将 CStringArray 写入文件。

  • CTextFile::CTextFile( const CString& ext, const CString& eol )

    构造函数。ext 可以包含默认扩展名(例如 "txt"),eol 可以包含行结束符(例如 "\n")。ext 默认为 "",eol 默认为 "\r\n"。

  • BOOL CTextFile::ReadTextFile( CString& filename, CStringArray& contents )

    将文件 filename 的内容逐行读入 CStringArray contents

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::ReadTextFile( CString& filename, CString& contents )

    将文件 filename 的内容读入 contents

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::WriteTextFile( CString& filename, const CStringArray& contents )

    contents 写入 filename。如果文件不存在,则创建文件;否则,则覆盖它。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::WriteTextFile( CString& filename, const CString& contents )

    contents 写入 filename。如果文件不存在,则创建文件;否则,则覆盖它。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::AppendFile( CString& filename, const CString& contents )

    contents 追加到 filename。如果文件不存在,则创建文件。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。AppendFile 不会添加行结束符。

  • BOOL CTextFile::AppendFile( CString& filename, const CStringArray& contents )

    contents 追加到 filename。如果文件不存在,则创建文件。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::Load( CString& filename, CEdit* edit )

    将文本文件 filename 加载到 edit

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。不会进行行结束符的翻译。

  • BOOL CTextFile::Load( CString& filename, CListBox* list )

    将文本文件 filename 加载到 list

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • BOOL CTextFile::Save( CString& filename, CEdit* edit )

    edit 的内容保存到文件 filename。文件将被创建或覆盖。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。请注意,将使用编辑框中的行结束符。

  • BOOL CTextFile::Save( CString& filename, CListBox* list )

    list 的内容保存到文件 filename。文件将被创建或覆盖。

    如果 filename 为空,将显示标准文件对话框,并且——如果选择 "确定"——在返回时 filename 将包含选定的文件名。

  • CString CTextFile::GetErrorMessage()

    检索错误消息。在任何返回 FALSE 的文件操作以及文件名不为空的情况下都应调用此函数。

关注点

我必须承认,根本没有什么。这个类真的很容易拼凑起来,但在其早期版本中它已经节省了我大量的时间。

历史

  • 2004/03/22 - 初始版本。
  • 2005/05/25 - 修正了 CTextFile::GetFilename 中的一个错误,即过滤器字符串的创建。
© . All rights reserved.