| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: ffile.h
- // Purpose: interface of wxFFile
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxFFile
- wxFFile implements buffered file I/O.
- This is a very small class designed to minimize the overhead of using it - in fact,
- there is hardly any overhead at all, but using it brings you automatic error checking
- and hides differences between platforms and compilers.
- It wraps inside it a @c FILE * handle used by standard C IO library (also known as @c stdio).
- @library{wxbase}
- @category{file}
- @see wxFFile::IsOpened
- */
- class wxFFile
- {
- public:
- wxFFile();
- /**
- Opens a file with the given file pointer, which has already been opened.
- @param fp
- An existing file descriptor, such as stderr.
- */
- wxFFile(FILE* fp);
- /**
- Opens a file with the given mode.
- As there is no way to return whether the operation was successful or not from
- the constructor you should test the return value of IsOpened() to check that it
- didn't fail.
- @param filename
- The filename.
- @param mode
- The mode in which to open the file using standard C strings.
- Note that you should use "b" flag if you use binary files under Windows
- or the results might be unexpected due to automatic newline conversion done
- for the text files.
- */
- wxFFile(const wxString& filename, const wxString& mode = "r");
- /**
- Destructor will close the file.
- @note it is not virtual so you should @e not derive from wxFFile!
- */
- ~wxFFile();
- /**
- Attaches an existing file pointer to the wxFFile object.
- The descriptor should be already opened and it will be closed by wxFFile object.
- */
- void Attach(FILE* fp, const wxString& name = wxEmptyString);
- /**
- Closes the file and returns @true on success.
- */
- bool Close();
- /**
- Get back a file pointer from wxFFile object -- the caller is responsible for
- closing the file if this descriptor is opened.
- IsOpened() will return @false after call to Detach().
- @return The FILE pointer (this is new since wxWidgets 3.0.0, in the
- previous versions this method didn't return anything).
- */
- FILE* Detach();
- /**
- Returns @true if an attempt has been made to read @e past
- the end of the file.
- Note that the behaviour of the file descriptor based class wxFile is different as
- wxFile::Eof() will return @true here as soon as the last byte of the file has been read.
- Also note that this method may only be called for opened files and may crash if
- the file is not opened.
- @todo THIS METHOD MAY CRASH? DOESN'T SOUND GOOD
- @see IsOpened()
- */
- bool Eof() const;
- /**
- Returns @true if an error has occurred on this file, similar to the standard
- @c ferror() function.
- Please note that this method may only be called for opened files and may crash
- if the file is not opened.
- @todo THIS METHOD MAY CRASH? DOESN'T SOUND GOOD
- @see IsOpened()
- */
- bool Error() const;
- /**
- Flushes the file and returns @true on success.
- */
- bool Flush();
- /**
- Returns the type of the file.
- @see wxFileKind
- */
- wxFileKind GetKind() const;
- /**
- Returns the file name.
- This is the name that was specified when the object was constructed or
- to the last call to Open(). Notice that it may be empty if Attach() was
- called without specifying the name.
- */
- const wxString& GetName() const;
- /**
- Returns @true if the file is opened.
- Most of the methods of this class may only be used for an opened file.
- */
- bool IsOpened() const;
- /**
- Returns the length of the file.
- */
- wxFileOffset Length() const;
- /**
- Opens the file, returning @true if successful.
- @param filename
- The filename.
- @param mode
- The mode in which to open the file.
- */
- bool Open(const wxString& filename, const wxString& mode = "r");
- /**
- Reads the specified number of bytes into a buffer, returning the actual number read.
- @param buffer
- A buffer to receive the data.
- @param count
- The number of bytes to read.
- @return The number of bytes read.
- */
- size_t Read(void* buffer, size_t count);
- /**
- Reads the entire contents of the file into a string.
- @param str
- String to read data into.
- @param conv
- Conversion object to use in Unicode build; by default supposes
- that file contents is encoded in UTF-8.
- @return @true if file was read successfully, @false otherwise.
- */
- bool ReadAll(wxString* str, const wxMBConv& conv = wxConvAuto());
- /**
- Seeks to the specified position and returns @true on success.
- @param ofs
- Offset to seek to.
- @param mode
- One of wxFromStart, wxFromEnd, wxFromCurrent.
- */
- bool Seek(wxFileOffset ofs, wxSeekMode mode = wxFromStart);
- /**
- Moves the file pointer to the specified number of bytes before the end of the
- file and returns @true on success.
- @param ofs
- Number of bytes before the end of the file.
- */
- bool SeekEnd(wxFileOffset ofs = 0);
- /**
- Returns the current position.
- */
- wxFileOffset Tell() const;
- /**
- Writes the contents of the string to the file, returns @true on success.
- The second argument is only meaningful in Unicode build of wxWidgets when
- @a conv is used to convert @a str to multibyte representation.
- */
- bool Write(const wxString& str, const wxMBConv& conv = wxConvAuto());
- /**
- Writes the specified number of bytes from a buffer.
- @param buffer
- A buffer containing the data.
- @param count
- The number of bytes to write.
- @return The number of bytes written.
- */
- size_t Write(const void* buffer, size_t count);
- /**
- Returns the file pointer associated with the file.
- */
- FILE* fp() const;
- };
|