Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdir.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QDIR_H
5#define QDIR_H
6
7#include <QtCore/qcompare.h>
8#include <QtCore/qstring.h>
9#include <QtCore/qfile.h>
10#include <QtCore/qfileinfo.h>
11#include <QtCore/qstringlist.h>
12#include <QtCore/qshareddata.h>
13
15
16class QDirIterator;
17class QDirPrivate;
18
19class Q_CORE_EXPORT QDir
20{
21public:
22 enum Filter { Dirs = 0x001,
23 Files = 0x002,
24 Drives = 0x004,
25 NoSymLinks = 0x008,
26 AllEntries = Dirs | Files | Drives,
27 TypeMask = 0x00f,
28
29 Readable = 0x010,
30 Writable = 0x020,
31 Executable = 0x040,
32 PermissionMask = 0x070,
33
34 Modified = 0x080,
35 Hidden = 0x100,
36 System = 0x200,
37
38 AccessMask = 0x3F0,
39
40 AllDirs = 0x400,
41 CaseSensitive = 0x800,
42 NoDot = 0x2000,
43 NoDotDot = 0x4000,
44 NoDotAndDotDot = NoDot | NoDotDot,
45
46 NoFilter = -1
47 };
48 Q_DECLARE_FLAGS(Filters, Filter)
49
50 enum SortFlag { Name = 0x00,
51 Time = 0x01,
52 Size = 0x02,
53 Unsorted = 0x03,
54 SortByMask = 0x03,
55
56 DirsFirst = 0x04,
57 Reversed = 0x08,
58 IgnoreCase = 0x10,
59 DirsLast = 0x20,
60 LocaleAware = 0x40,
61 Type = 0x80,
62 NoSort = -1
63 };
64 Q_DECLARE_FLAGS(SortFlags, SortFlag)
65
66 QDir(const QDir &);
67 QDir(const QString &path = QString());
68 QDir(const QString &path, const QString &nameFilter,
69 SortFlags sort = SortFlags(Name | IgnoreCase), Filters filter = AllEntries);
70#ifdef Q_QDOC
71 QDir(const std::filesystem::path &path);
72 QDir(const std::filesystem::path &path, const QString &nameFilter,
73 SortFlags sort = SortFlags(Name | IgnoreCase), Filters filter = AllEntries);
74#elif QT_CONFIG(cxx17_filesystem)
75 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
76 QDir(const T &path) : QDir(QtPrivate::fromFilesystemPath(path))
77 {
78 }
79 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
80 QDir(const T &path, const QString &nameFilter,
81 SortFlags sort = SortFlags(Name | IgnoreCase), Filters filter = AllEntries)
82 : QDir(QtPrivate::fromFilesystemPath(path), nameFilter, sort, filter)
83 {
84 }
85#endif // QT_CONFIG(cxx17_filesystem)
86 ~QDir();
87
88 QDir &operator=(const QDir &);
89 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QDir)
90
91 void swap(QDir &other) noexcept
92 { d_ptr.swap(other.d_ptr); }
93
94 void setPath(const QString &path);
95#ifdef Q_QDOC
96 void setPath(const std::filesystem::path &path);
97#elif QT_CONFIG(cxx17_filesystem)
98 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
99 void setPath(const T &path)
100 {
101 setPath(QtPrivate::fromFilesystemPath(path));
102 }
103#endif // QT_CONFIG(cxx17_filesystem)
104 QString path() const;
105 QString absolutePath() const;
106 QString canonicalPath() const;
107#if QT_CONFIG(cxx17_filesystem) || defined(Q_QDOC)
108 std::filesystem::path filesystemPath() const
109 { return QtPrivate::toFilesystemPath(path()); }
110 std::filesystem::path filesystemAbsolutePath() const
111 { return QtPrivate::toFilesystemPath(absolutePath()); }
112 std::filesystem::path filesystemCanonicalPath() const
113 { return QtPrivate::toFilesystemPath(canonicalPath()); }
114#endif // QT_CONFIG(cxx17_filesystem)
115
116#ifndef QT_BOOTSTRAPPED
117 static void setSearchPaths(const QString &prefix, const QStringList &searchPaths);
118 static void addSearchPath(const QString &prefix, const QString &path);
119#ifdef Q_QDOC
120 static void addSearchPath(const QString &prefix, const std::filesystem::path &path);
121#elif QT_CONFIG(cxx17_filesystem)
122 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
123 static void addSearchPath(const QString &prefix, const T &path)
124 {
125 addSearchPath(prefix, QtPrivate::fromFilesystemPath(path));
126 }
127#endif // QT_CONFIG(cxx17_filesystem)
128 static QStringList searchPaths(const QString &prefix);
129#endif // QT_BOOTSTRAPPED
130
131 QString dirName() const;
132 QString filePath(const QString &fileName) const;
134 QString relativeFilePath(const QString &fileName) const;
135
136 static QString toNativeSeparators(const QString &pathName);
137 static QString fromNativeSeparators(const QString &pathName);
138
139 bool cd(const QString &dirName);
140 bool cdUp();
141
142 QStringList nameFilters() const;
143 void setNameFilters(const QStringList &nameFilters);
144
145 Filters filter() const;
146 void setFilter(Filters filter);
147 SortFlags sorting() const;
148 void setSorting(SortFlags sort);
149
150#if QT_CORE_REMOVED_SINCE(6, 5)
151 uint count() const;
152#endif
154 bool isEmpty(Filters filters = Filters(AllEntries | NoDotAndDotDot)) const;
155
156#if QT_CORE_REMOVED_SINCE(6, 5) && QT_POINTER_SIZE != 4
157 QString operator[](int) const;
158#endif
159 QString operator[](qsizetype) const;
160
161 static QStringList nameFiltersFromString(const QString &nameFilter);
162
163 QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const;
164 QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter,
165 SortFlags sort = NoSort) const;
166
167 QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const;
168 QFileInfoList entryInfoList(const QStringList &nameFilters, Filters filters = NoFilter,
169 SortFlags sort = NoSort) const;
170
171 bool mkdir(const QString &dirName) const;
172 bool mkdir(const QString &dirName, QFile::Permissions permissions) const;
173 bool rmdir(const QString &dirName) const;
174 bool mkpath(const QString &dirPath) const;
175 bool rmpath(const QString &dirPath) const;
176
177 bool removeRecursively();
178
179 bool isReadable() const;
180 bool exists() const;
181 bool isRoot() const;
182
183 static bool isRelativePath(const QString &path);
184 inline static bool isAbsolutePath(const QString &path) { return !isRelativePath(path); }
185 bool isRelative() const;
186 inline bool isAbsolute() const { return !isRelative(); }
187 bool makeAbsolute();
188
189#if QT_CORE_REMOVED_SINCE(6, 8)
190 bool operator==(const QDir &dir) const;
191 inline bool operator!=(const QDir &dir) const { return !operator==(dir); }
192#endif
193
194 bool remove(const QString &fileName);
195 bool rename(const QString &oldName, const QString &newName);
196 bool exists(const QString &name) const;
197
198 static QFileInfoList drives();
199
200 constexpr static inline QChar listSeparator() noexcept
201 {
202#if defined(Q_OS_WIN)
203 return u';';
204#else
205 return u':';
206#endif
207 }
208
210 {
211#if defined(Q_OS_WIN)
212 return u'\\';
213#else
214 return u'/';
215#endif
216 }
217
218 static bool setCurrent(const QString &path);
219 static inline QDir current() { return QDir(currentPath()); }
220 static QString currentPath();
221
222 static inline QDir home() { return QDir(homePath()); }
223 static QString homePath();
224 static inline QDir root() { return QDir(rootPath()); }
225 static QString rootPath();
226 static inline QDir temp() { return QDir(tempPath()); }
227 static QString tempPath();
228
229#if QT_CONFIG(regularexpression)
230 static bool match(const QStringList &filters, const QString &fileName);
231 static bool match(const QString &filter, const QString &fileName);
232#endif
233
234 static QString cleanPath(const QString &path);
235 void refresh() const;
236
237protected:
238 explicit QDir(QDirPrivate &d);
239
240 QSharedDataPointer<QDirPrivate> d_ptr;
241
242private:
243 friend Q_CORE_EXPORT bool comparesEqual(const QDir &lhs, const QDir &rhs);
245 friend class QDirIterator;
246 friend class QDirListing;
247 // Q_DECLARE_PRIVATE equivalent for shared data pointers
248 QDirPrivate *d_func();
249 const QDirPrivate *d_func() const { return d_ptr.constData(); }
250};
251
252Q_DECLARE_SHARED(QDir)
254Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::SortFlags)
255
256#ifndef QT_NO_DEBUG_STREAM
257class QDebug;
258Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters);
259Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QDir &dir);
260#endif
261
263
264#endif // QDIR_H
\inmodule QtCore
\inmodule QtCore
The QDirIterator class provides an iterator for directory entrylists.
The QDirListing class provides an STL-style iterator for directory entries.
Definition qdirlisting.h:18
\inmodule QtCore
Definition qdir.h:20
bool isAbsolute() const
Returns true if the directory's path is absolute; otherwise returns false.
Definition qdir.h:186
static bool isAbsolutePath(const QString &path)
Returns true if path is absolute; returns false if it is relative.
Definition qdir.h:184
static QDir root()
Returns the root directory.
Definition qdir.h:224
static QDir current()
Returns the application's current directory.
Definition qdir.h:219
static QDir temp()
Returns the system's temporary directory.
Definition qdir.h:226
QSharedDataPointer< QDirPrivate > d_ptr
Definition qdir.h:240
static QChar separator()
Returns the native directory separator: "/" under Unix and "\\" under Windows.
Definition qdir.h:209
static QDir home()
Returns the user's home directory.
Definition qdir.h:222
SortFlag
This enum describes the sort options available to QDir, e.g.
Definition qdir.h:50
Filter
This enum describes the filtering options available to QDir; e.g.
Definition qdir.h:22
static constexpr QChar listSeparator() noexcept
Definition qdir.h:200
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
std::list< QString >::iterator Name
Definition lalr.h:28
Combined button and popup list for selecting options.
\macro QT_NO_KEYWORDS >
#define Q_DECLARE_EQUALITY_COMPARABLE(...)
constexpr bool operator!=(const timespec &t1, const timespec &t2)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
bool comparesEqual(const QDir &lhs, const QDir &rhs)
Definition qdir.cpp:1819
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2447
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
@ AccessMask
@ Readable
@ Writable
GLenum GLenum GLsizei count
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint name
GLsizei const GLchar *const * path
static QT_BEGIN_NAMESPACE bool isRelative(const QString &path)
static QString absolutePath(const QString &path)
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
Definition qrandom.cpp:1220
static QString canonicalPath(const QString &rootPath)
static QString absoluteFilePath(const Options *options, const QString &relativeFileName)
Definition main.cpp:1902
return device isReadable() ? device -> read(static_cast< char * >(buf), size) :-1
static bool match(const uchar *found, uint foundLen, const char *target, uint targetLen)
#define QT6_DECL_NEW_OVERLOAD
ptrdiff_t qsizetype
Definition qtypes.h:165
unsigned int uint
Definition qtypes.h:34
static QString fromNativeSeparators(const QString &pathName)
Definition qurl.cpp:3317
settings remove("monkey")
QSharedPointer< T > other(t)
[5]
this swap(other)
QString dir
[11]
dialog setNameFilters(filters)
const QStringList filters({"Image files (*.png *.xpm *.jpg)", "Text files (*.txt)", "Any files (*)" })
[6]
Definition moc.h:23