CTextFile: A handy helper






4.62/5 (27 votes)
A small helper class for reading, writing and appending to/from text files.
Introduction
While perhaps not the most impressive of classes, this one is at least useful. It lets you read, write and append to text files from a CString
or CStringArray
, as well as load and save to and from list- and editboxes. While not what you need to manage your data in an application, it can be used for configuration files, text dumps during development, and other such small tasks. And - it will pop up a file dialog if no file name is given to any of the member calls.
Using the code
Instantiate a CTextFile
and fire away! Here is an example:
CString str(""); CTextFile tf("gnu"); if( !tf.Save( str, m_editLoad ) ) if( str.GetLength() ) AfxMessageBox( tf.GetErrorMessage() );
which saves the contents of the edit box m_edit
. As str
(the filename) is empty, CTextFile
will display a file dialog, and str
will contain the selected filename on return.
In the ctor, an extension and the end-of-line marker can be given. The extension defaults to "", e-o-l to "\r\n". The extension will be used to filter files if the standard file dialog is displayed. The somewhat limited support for end-of-line markers include reading from a file to a single CString
, and when writing files from a CStringArray
.
CTextFile::CTextFile( const CString& ext, const CString& eol )
The ctor.
ext
can contain the default extension ("txt", for example), andeol
the end-of-line marker ("\n", for example).ext
defaults to "" andeol
to "\r\n".BOOL CTextFile::ReadTextFile( CString& filename, CStringArray& contents )
Will read the contents of the file filename into the
CStringArray
contents, one line at a time.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::ReadTextFile( CString& filename, CString& contents )
Will read the contents of the file
filename
intocontents
.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::WriteTextFile( CString& filename, const CStringArray& contents )
Writes
contents
tofilename
. Will create the file if it doesn't already exist, overwrite it otherwise.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::WriteTextFile( CString& filename, const CString& contents )
Writes
contents
tofilename
. Will create the file if it doesn't already exist, overwrites it otherwise.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::AppendFile( CString& filename, const CString& contents )
Appends
contents
tofilename
. Will create the file if it doesn't already exist.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.AppendFile
will not add end-of-line markers.BOOL CTextFile::AppendFile( CString& filename, const CStringArray& contents )
Appends
contents
tofilename
. Will create the file if it doesn't already exist.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::Load( CString& filename, CEdit* edit )
Loads a text file from
filename
toedit
.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return. No translation of end-of-line markers will be made.BOOL CTextFile::Load( CString& filename, CListBox* list )
Loads a text file from
filename
tolist
.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.BOOL CTextFile::Save( CString& filename, CEdit* edit )
Saves the contents of
edit
to the filefilename
. The file will be created or overwritten.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return. Note that the end-of-line markers from the editbox will be used.BOOL CTextFile::Save( CString& filename, CListBox* list )
Saves the contents of
list
to the filefilename
. The file will be created or overwritten.If
filename
is empty, the standard file dialog will be displayed, and - if OK is selected -filename
will contain the selected filename on return.CString CTextFile::GetErrorMessage()
Retrieves the error message. Should be called after any of the file operations that return
FALSE
and if the file name is not empty.
Points of Interest
I have to admit it, there are absolutely none. This class was really easy to cobble together, but it has been a great time-saver in its earlier incarnations.
History
- 2004/03/22 - Initial version.
- 2005/05/25 - Corrected bug in
CTextFile::GetFilename
, the creation of the filter string.