diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/io/qfile.cpp | 2 | ||||
-rw-r--r-- | src/corelib/io/qfileinfo.cpp | 22 | ||||
-rw-r--r-- | src/corelib/io/qfileinfo.h | 1 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index 3af936122e..d991e86839 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -429,7 +429,7 @@ QFile::exists() const bool QFile::exists(const QString &fileName) { - return QFileInfo(fileName).exists(); + return QFileInfo::exists(fileName); } /*! diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp index 93444cb47c..1d5f16c9d9 100644 --- a/src/corelib/io/qfileinfo.cpp +++ b/src/corelib/io/qfileinfo.cpp @@ -667,6 +667,28 @@ bool QFileInfo::exists() const } /*! + Returns true if the \a file exists; otherwise returns false. + + \note If \a file is a symlink that points to a non-existing + file, false is returned. + + \note Using this function is faster for than using + \c QFileInfo(file).exists() for file system access. +*/ +bool QFileInfo::exists(const QString &file) +{ + QFileSystemEntry entry(file); + QFileSystemMetaData data; + QAbstractFileEngine *engine = + QFileSystemEngine::resolveEntryAndCreateLegacyEngine(entry, data); + // Expensive fallback to non-QFileSystemEngine implementation + if (engine) + return QFileInfo(file).exists(); + QFileSystemEngine::fillMetaData(entry, data, QFileSystemMetaData::ExistsAttribute); + return data.exists(); +} + +/*! Refreshes the information about the file, i.e. reads in information from the file system the next time a cached property is fetched. diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h index 211c18d0a0..0f18261943 100644 --- a/src/corelib/io/qfileinfo.h +++ b/src/corelib/io/qfileinfo.h @@ -84,6 +84,7 @@ public: void setFile(const QFile &file); void setFile(const QDir &dir, const QString &file); bool exists() const; + static bool exists(const QString &file); void refresh(); QString filePath() const; |