]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/textfile.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxTextFile 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  11     The line termination type (kept wxTextFileType name for compability). 
  15     wxTextFileType_None
,  //!< incomplete (the last line of the file only) 
  16     wxTextFileType_Unix
,  //!< line is terminated with 'LF' = 0xA = 10 = '\\n' 
  17     wxTextFileType_Dos
,   //!< line is terminated with 'CR' 'LF' 
  18     wxTextFileType_Mac
,   //!< line is terminated with 'CR' = 0xD = 13 = '\\r' 
  19     wxTextFileType_Os2    
//!< line is terminated with 'CR' 'LF' 
  25     The wxTextFile is a simple class which allows to work with text files on line by 
  26     line basis. It also understands the differences in line termination characters 
  27     under different platforms and will not do anything bad to files with "non 
  28     native" line termination sequences - in fact, it can be also used to modify the 
  29     text files and change the line termination characters from one type (say DOS) to 
  32     One word of warning: the class is not at all optimized for big files and thus 
  33     it will load the file entirely into memory when opened. Of course, you should 
  34     not work in this way with large files (as an estimation, anything over 1 Megabyte 
  35     is surely too big for this class). On the other hand, it is not a serious 
  36     limitation for small files like configuration files or program sources 
  37     which are well handled by wxTextFile. 
  39     The typical things you may do with wxTextFile in order are: 
  41     - Create and open it: this is done with either wxTextFile::Create or wxTextFile::Open 
  42       function which opens the file (name may be specified either as the argument to 
  43       these functions or in the constructor), reads its contents in memory (in the 
  44       case of wxTextFile::Open()) and closes it. 
  45     - Work with the lines in the file: this may be done either with "direct 
  46       access" functions like wxTextFile::GetLineCount and wxTextFile::GetLine 
  47       (@e operator[] does exactly the same but looks more like array addressing) 
  48       or with "sequential access" functions which include wxTextFile::GetFirstLine, 
  49       wxTextFile::GetNextLine and also wxTextFile::GetLastLine, wxTextFile::GetPrevLine. 
  50       For the sequential access functions the current line number is maintained: it is 
  51       returned by wxTextFile::GetCurrentLine and may be changed with wxTextFile::GoToLine. 
  52     - Add/remove lines to the file: wxTextFile::AddLine and wxTextFile::InsertLine 
  53       add new lines while wxTextFile::RemoveLine deletes the existing ones. 
  54       wxTextFile::Clear resets the file to empty. 
  55     - Save your changes: notice that the changes you make to the file will @b not be 
  56       saved automatically; calling wxTextFile::Close or doing nothing discards them! 
  57       To save the changes you must explicitly callwxTextFile::Write - here, you may 
  58       also change the line termination type if you wish. 
  70         Default constructor, use Create() or Open() with a file name parameter to 
  71         initialize the object. 
  76         Constructor does not load the file into memory, use Open() to do it. 
  78     wxTextFile(const wxString
& strFile
); 
  81         Destructor does nothing. 
  83     virtual ~wxTextFile(); 
  86         Adds a line to the end of file. 
  88     void AddLine(const wxString
& str
, 
  89                  wxTextFileType type 
= wxTextBuffer::typeDefault
); 
  92         Delete all lines from the file, set current line number to 0. 
  97         Closes the file and frees memory, @b "losing all changes". 
  98         Use Write() if you want to save them. 
 104         Creates the file with the given name or the name which was given in the 
 105         @ref wxTextFile() constructor. The array of file lines is initially empty. 
 107         It will fail if the file already exists, Open() should be used in this case. 
 110     bool Create(const wxString
& strFile
) const; 
 114         Returns @true if the current line is the last one. 
 119         Return @true if file exists - the name of the file should have been specified 
 120         in the constructor before calling Exists(). 
 125         Returns the current line: it has meaning only when you're using 
 126         GetFirstLine()/GetNextLine() functions, it doesn't get updated when 
 127         you're using "direct access" functions like GetLine(). 
 128         GetFirstLine() and GetLastLine() also change the value of the current line, 
 129         as well as GoToLine(). 
 131     size_t GetCurrentLine() const; 
 134         Get the line termination string corresponding to given constant. 
 136         @e typeDefault is the value defined during the compilation and corresponds 
 137         to the native format of the platform, i.e. it will be @c wxTextFileType_Dos 
 138         under Windows, @c wxTextFileType_Unix under Unix (including Mac OS X when 
 139         compiling with the Apple Developer Tools) and @c wxTextFileType_Mac under 
 140         Mac OS (including Mac OS X when compiling with CodeWarrior). 
 142     static const char* GetEOL(wxTextFileType type 
= typeDefault
) const; 
 145         This method together with GetNextLine() allows more "iterator-like" 
 146         traversal of the list of lines, i.e. you may write something like: 
 151         for ( str = file.GetFirstLine(); !file.Eof(); str = file.GetNextLine() ) 
 153             // do something with the current line in str 
 155         // do something with the last line in str 
 158     wxString
& GetFirstLine(); 
 161         Gets the last line of the file. 
 163         Together with GetPrevLine() it allows to enumerate the lines 
 164         in the file from the end to the beginning like this: 
 169         for ( str = file.GetLastLine(); 
 170             file.GetCurrentLine() > 0; 
 171             str = file.GetPrevLine() ) 
 173             // do something with the current line in str 
 175         // do something with the first line in str 
 178     wxString
& GetLastLine(); 
 181         Retrieves the line number @a n from the file. 
 183         The returned line may be modified but you shouldn't add line terminator 
 184         at the end - this will be done by wxTextFile. 
 186     wxString
& GetLine(size_t n
) const; 
 189         Get the number of lines in the file. 
 191     size_t GetLineCount() const; 
 194         Get the type of the line (see also wxTextFile::GetEOL). 
 196     wxTextFileType 
GetLineType(size_t n
) const; 
 199         Get the name of the file. 
 201     const wxString
& GetName() const; 
 204         Gets the next line (see GetFirstLine() for the example). 
 206     wxString
& GetNextLine(); 
 209         Gets the previous line in the file. 
 211     wxString
& GetPrevLine(); 
 214         Changes the value returned by GetCurrentLine() and used by GetFirstLine() 
 217     void GoToLine(size_t n
); 
 220         Guess the type of file (which is supposed to be opened). 
 222         If sufficiently many lines of the file are in DOS/Unix/Mac format, 
 223         the corresponding value will be returned. 
 224         If the detection mechanism fails @c wxTextFileType_None is returned. 
 226     wxTextFileType 
GuessType() const; 
 229         Insert a line before the line number @a n. 
 231     void InsertLine(const wxString
& str
, size_t n
, 
 232                     wxTextFileType type 
= wxTextBuffer::typeDefault
); 
 235         Returns @true if the file is currently opened. 
 237     bool IsOpened() const; 
 241         Open() opens the file with the given name or the name which was given in the 
 242         @ref wxTextFile() constructor and also loads file in memory on success. 
 244         It will fail if the file does not exist, Create() should be used in this case. 
 246         The @a conv argument is only meaningful in Unicode build of wxWidgets when 
 247         it is used to convert the file to wide character representation. 
 249     bool Open(const wxMBConv
& conv 
= wxConvAuto()) const; 
 250     bool Open(const wxString
& strFile
, const wxMBConv
& conv 
= wxConvAuto()) const; 
 254         Delete line number @a n from the file. 
 256     void RemoveLine(size_t n
); 
 259         Change the file on disk. 
 261         The @a typeNew parameter allows you to change the file format 
 262         (default argument means "don't change type") and may be used to convert, 
 263         for example, DOS files to Unix. 
 265         The @a conv argument is only meaningful in Unicode build of wxWidgets when 
 266         it is used to convert all lines to multibyte representation before writing 
 267         them to physical file. 
 270             @true if operation succeeded, @false if it failed. 
 272     bool Write(wxTextFileType typeNew 
= wxTextFileType_None
, 
 273                const wxMBConv
& conv 
= wxConvAuto()); 
 276         The same as GetLine(). 
 278     wxString
& operator[](size_t n
) const;