Added wxFileName::Exists().

This function checks for existence of anything with the given name, not
necessarily just a file or a directory.

Extend the unit test to verify that it returns true for /dev/null on Unix
systems.

Closes #953.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-02-15 15:39:46 +00:00
parent 901504c383
commit 996d3fe3f8
5 changed files with 51 additions and 4 deletions

View File

@@ -467,6 +467,7 @@ All:
- Add wxHTTP::SetPostBuffer(wxMemoryBuffer) and SetPostText() (Eran Ifrah).
- Fix wrong time zone used in wxDateTime::UNow().
- Fix performance of wxStdInputStream with MSVC8/9 (wsu).
- Added wxFileName::Exists().
All (GUI):

View File

@@ -214,14 +214,20 @@ public:
!m_ext.empty() || m_hasExt;
}
// does the file with this name exists?
// does the file with this name exist?
bool FileExists() const;
static bool FileExists( const wxString &file );
// does the directory with this name exists?
// does the directory with this name exist?
bool DirExists() const;
static bool DirExists( const wxString &dir );
// does anything at all with this name (i.e. file, directory or some
// other file system object such as a device, socket, ...) exist?
bool Exists() const { return Exists(GetFullPath()); }
static bool Exists(const wxString& path);
// checks on most common flags for files/directories;
// more platform-specific features (like e.g. Unix permissions) are not
// available in wxFileName

View File

@@ -452,11 +452,19 @@ public:
/**
Returns @true if the directory with this name exists.
Notice that this function tests the directory part of this object,
i.e. the string returned by GetPath(), and not the full path returned
by GetFullPath().
@see FileExists(), Exists()
*/
bool DirExists() const;
/**
Returns @true if the directory with name @a dir exists.
@see FileExists(), Exists()
*/
static bool DirExists(const wxString& dir);
@@ -467,17 +475,40 @@ public:
static wxFileName DirName(const wxString& dir,
wxPathFormat format = wxPATH_NATIVE);
/**
Calls the static overload of this function with the full path of this
object.
@since 2.9.4
*/
bool Exists() const;
/**
Returns @true if either a file or a directory or something else with
this name exists in the file system.
This method is equivalent to @code FileExists() || DirExists() @endcode
under most systems but under Unix it also returns true if the file
identifies a special file system object such as a device, a socket or a
FIFO.
@since 2.9.4
@see FileExists(), DirExists()
*/
static bool Exists(const wxString& path);
/**
Returns @true if the file with this name exists.
@see DirExists()
@see DirExists(), Exists()
*/
bool FileExists() const;
/**
Returns @true if the file with name @a file exists.
@see DirExists()
@see DirExists(), Exists()
*/
static bool FileExists(const wxString& file);

View File

@@ -732,6 +732,12 @@ bool wxFileName::DirExists( const wxString &dirPath )
return wxFileSystemObjectExists(dirPath, wxFileSystemObject_Dir);
}
/* static */
bool wxFileName::Exists(const wxString& path)
{
return wxFileSystemObjectExists(path, wxFileSystemObject_Any);
}
// ----------------------------------------------------------------------------
// CWD and HOME stuff
// ----------------------------------------------------------------------------

View File

@@ -657,13 +657,16 @@ void FileNameTestCase::TestExists()
CPPUNIT_ASSERT( fn.FileExists() );
CPPUNIT_ASSERT( !wxFileName::DirExists(fn.GetFullPath()) );
CPPUNIT_ASSERT( fn.Exists() );
wxFileName dirTemp(wxFileName::DirName(wxFileName::GetTempDir()));
CPPUNIT_ASSERT( !dirTemp.FileExists() );
CPPUNIT_ASSERT( dirTemp.DirExists() );
CPPUNIT_ASSERT( dirTemp.Exists() );
#ifdef __UNIX__
CPPUNIT_ASSERT( !wxFileName::FileExists("/dev/null") );
CPPUNIT_ASSERT( !wxFileName::DirExists("/dev/null") );
CPPUNIT_ASSERT( wxFileName::Exists("/dev/null") );
#endif // __UNIX__
}