summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qfile.cpp2
-rw-r--r--src/corelib/io/qfileinfo.cpp22
-rw-r--r--src/corelib/io/qfileinfo.h1
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;