Added wxFile::ReadAll() for consistency with wxFFile::ReadAll().
Make it possible to use wxFFile and wxFile interchangeably for simply reading the entire contents of the file as a string. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -534,6 +534,7 @@ All:
|
|||||||
- Add wxDir::Close() method (Silverstorm82).
|
- Add wxDir::Close() method (Silverstorm82).
|
||||||
- Fix compilation of wxHash{Map,Set} with g++ 4.7 (Nathan Ridge).
|
- Fix compilation of wxHash{Map,Set} with g++ 4.7 (Nathan Ridge).
|
||||||
- Fix posting large amounts of data in wxHTTP (Platonides).
|
- Fix posting large amounts of data in wxHTTP (Platonides).
|
||||||
|
- Add wxFile::ReadAll() for consistency with wxFFile.
|
||||||
- Added Nepali translation (Him Prasad Gautam).
|
- Added Nepali translation (Him Prasad Gautam).
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include "wx/string.h"
|
#include "wx/string.h"
|
||||||
#include "wx/filefn.h"
|
#include "wx/filefn.h"
|
||||||
#include "wx/strconv.h"
|
#include "wx/convauto.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// class wxFile: raw file IO
|
// class wxFile: raw file IO
|
||||||
@@ -70,6 +70,8 @@ public:
|
|||||||
int fd() const { return m_fd; }
|
int fd() const { return m_fd; }
|
||||||
|
|
||||||
// read/write (unbuffered)
|
// read/write (unbuffered)
|
||||||
|
// read all data from the file into a string (useful for text files)
|
||||||
|
bool ReadAll(wxString *str, const wxMBConv& conv = wxConvAuto());
|
||||||
// returns number of bytes read or wxInvalidOffset on error
|
// returns number of bytes read or wxInvalidOffset on error
|
||||||
ssize_t Read(void *pBuf, size_t nCount);
|
ssize_t Read(void *pBuf, size_t nCount);
|
||||||
// returns the number of bytes written
|
// returns the number of bytes written
|
||||||
|
@@ -372,6 +372,23 @@ public:
|
|||||||
*/
|
*/
|
||||||
ssize_t Read(void* buffer, size_t count);
|
ssize_t Read(void* buffer, size_t count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Reads the entire contents of the file into a string.
|
||||||
|
|
||||||
|
@param str
|
||||||
|
Non-@NULL pointer to a 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 but falls back to the
|
||||||
|
current locale encoding (or Latin-1 if it is UTF-8 too) if it is
|
||||||
|
not.
|
||||||
|
|
||||||
|
@return @true if file was read successfully, @false otherwise.
|
||||||
|
|
||||||
|
@since 2.9.5
|
||||||
|
*/
|
||||||
|
bool ReadAll(wxString* str, const wxMBConv& conv = wxConvAuto());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Seeks to the specified position.
|
Seeks to the specified position.
|
||||||
|
|
||||||
|
@@ -291,6 +291,34 @@ bool wxFile::Close()
|
|||||||
// read/write
|
// read/write
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
bool wxFile::ReadAll(wxString *str, const wxMBConv& conv)
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( str, false, wxS("Output string must be non-NULL") );
|
||||||
|
|
||||||
|
size_t length = wx_truncate_cast(size_t, Length());
|
||||||
|
wxCHECK_MSG( (wxFileOffset)length == Length(), false, wxT("huge file not supported") );
|
||||||
|
|
||||||
|
wxCharBuffer buf(length);
|
||||||
|
char* p = buf.data();
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
static const unsigned READSIZE = 4096;
|
||||||
|
|
||||||
|
ssize_t read = Read(p, length > READSIZE ? READSIZE : length);
|
||||||
|
if ( read == wxInvalidOffset )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
p += read;
|
||||||
|
}
|
||||||
|
|
||||||
|
*p = 0;
|
||||||
|
|
||||||
|
wxString strTmp(buf, conv);
|
||||||
|
str->swap(strTmp);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// read
|
// read
|
||||||
ssize_t wxFile::Read(void *pBuf, size_t nCount)
|
ssize_t wxFile::Read(void *pBuf, size_t nCount)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user