summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qdir.h
blob: e485700311e56d3d80b3e2bbaf2f006c0f859493 (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
// Copyright (C) 2020 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QDIR_H#define QDIR_H#include <QtCore/qcompare.h>#include <QtCore/qstring.h>#include <QtCore/qdirlisting.h>#include <QtCore/qfile.h>#include <QtCore/qfileinfo.h>#include <QtCore/qstringlist.h>#include <QtCore/qshareddata.h> QT_BEGIN_NAMESPACE class QDirIterator;class QDirPrivate;class Q_CORE_EXPORT QDir {public:enum Filter { Dirs =0x001, Files =0x002, Drives =0x004, NoSymLinks =0x008, AllEntries = Dirs | Files | Drives, TypeMask =0x00f, Readable =0x010, Writable =0x020, Executable =0x040, PermissionMask =0x070, Modified =0x080, Hidden =0x100, System =0x200, AccessMask =0x3F0, AllDirs =0x400, CaseSensitive =0x800, NoDot =0x2000, NoDotDot =0x4000, NoDotAndDotDot = NoDot | NoDotDot, NoFilter = -1};Q_DECLARE_FLAGS(Filters, Filter)enum SortFlag { Name =0x00, Time =0x01, Size =0x02, Unsorted =0x03, SortByMask =0x03, DirsFirst =0x04, Reversed =0x08, IgnoreCase =0x10, DirsLast =0x20, LocaleAware =0x40, Type =0x80, NoSort = -1};Q_DECLARE_FLAGS(SortFlags, SortFlag)QDir(const QDir &);QDir(const QString &path =QString());QDir(const QString &path,const QString &nameFilter, SortFlags sort =SortFlags(Name | IgnoreCase), Filters filter = AllEntries);#ifdef Q_QDOCQDir(conststd::filesystem::path &path);QDir(conststd::filesystem::path &path,const QString &nameFilter, SortFlags sort =SortFlags(Name | IgnoreCase), Filters filter = AllEntries);#elif QT_CONFIG(cxx17_filesystem)template<typename T,QtPrivate::ForceFilesystemPath<T> =0>QDir(const T &path) :QDir(QtPrivate::fromFilesystemPath(path)){}template<typename T,QtPrivate::ForceFilesystemPath<T> =0>QDir(const T &path,const QString &nameFilter, SortFlags sort =SortFlags(Name | IgnoreCase), Filters filter = AllEntries):QDir(QtPrivate::fromFilesystemPath(path), nameFilter, sort, filter){}#endif// QT_CONFIG(cxx17_filesystem)~QDir(); QDir &operator=(const QDir &);QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QDir)voidswap(QDir &other) noexcept { d_ptr.swap(other.d_ptr); }voidsetPath(const QString &path);#ifdef Q_QDOCvoidsetPath(conststd::filesystem::path &path);#elif QT_CONFIG(cxx17_filesystem)template<typename T,QtPrivate::ForceFilesystemPath<T> =0>voidsetPath(const T &path){setPath(QtPrivate::fromFilesystemPath(path));}#endif// QT_CONFIG(cxx17_filesystem) QString path()const; QString absolutePath()const; QString canonicalPath()const;#if QT_CONFIG(cxx17_filesystem) || defined(Q_QDOC)std::filesystem::path filesystemPath()const{returnQtPrivate::toFilesystemPath(path()); }std::filesystem::path filesystemAbsolutePath()const{returnQtPrivate::toFilesystemPath(absolutePath()); }std::filesystem::path filesystemCanonicalPath()const{returnQtPrivate::toFilesystemPath(canonicalPath()); }#endif// QT_CONFIG(cxx17_filesystem)#ifndef QT_BOOTSTRAPPEDstatic voidsetSearchPaths(const QString &prefix,const QStringList &searchPaths);static voidaddSearchPath(const QString &prefix,const QString &path);#ifdef Q_QDOCstatic voidaddSearchPath(const QString &prefix,conststd::filesystem::path &path);#elif QT_CONFIG(cxx17_filesystem)template<typename T,QtPrivate::ForceFilesystemPath<T> =0>static voidaddSearchPath(const QString &prefix,const T &path){addSearchPath(prefix,QtPrivate::fromFilesystemPath(path));}#endif// QT_CONFIG(cxx17_filesystem)static QStringList searchPaths(const QString &prefix);#endif// QT_BOOTSTRAPPED QString dirName()const; QString filePath(const QString &fileName)const; QString absoluteFilePath(const QString &fileName)const; QString relativeFilePath(const QString &fileName)const;static QString toNativeSeparators(const QString &pathName);static QString fromNativeSeparators(const QString &pathName);boolcd(const QString &dirName);boolcdUp(); QStringList nameFilters()const;voidsetNameFilters(const QStringList &nameFilters); Filters filter()const;voidsetFilter(Filters filter); SortFlags sorting()const;voidsetSorting(SortFlags sort);#if QT_CORE_REMOVED_SINCE(6, 5) uint count()const;#endif qsizetype count(QT6_DECL_NEW_OVERLOAD)const;boolisEmpty(Filters filters =Filters(AllEntries | NoDotAndDotDot))const;#if QT_CORE_REMOVED_SINCE(6, 5) && QT_POINTER_SIZE != 4 QString operator[](int)const;#endif QString operator[](qsizetype)const;static QStringList nameFiltersFromString(const QString &nameFilter); QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort)const; QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort)const; QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort)const; QFileInfoList entryInfoList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort)const;#if QT_CORE_REMOVED_SINCE(6, 10)boolmkdir(const QString &dirName)const;boolmkdir(const QString &dirName,QFile::Permissions permissions)const;#endifboolmkdir(const QString &dirName,std::optional<QFile::Permissions> p =std::nullopt)const;boolrmdir(const QString &dirName)const;#if QT_CORE_REMOVED_SINCE(6, 10)boolmkpath(const QString &dirPath)const;#endifboolmkpath(const QString &dirPath,std::optional<QFile::Permissions> p =std::nullopt)const;boolrmpath(const QString &dirPath)const;boolremoveRecursively();boolisReadable()const;boolexists()const;boolisRoot()const;static boolisRelativePath(const QString &path);inlinestatic boolisAbsolutePath(const QString &path) {return!isRelativePath(path); }boolisRelative()const;inlineboolisAbsolute()const{return!isRelative(); }boolmakeAbsolute();#if QT_CORE_REMOVED_SINCE(6, 8)booloperator==(const QDir &dir)const;inlinebooloperator!=(const QDir &dir)const{return!operator==(dir); }#endifboolremove(const QString &fileName);boolrename(const QString &oldName,const QString &newName);boolexists(const QString &name)const;static QFileInfoList drives();constexprstaticinline QChar listSeparator() noexcept {#if defined(Q_OS_WIN)return u';';#elsereturn u':';#endif}static QChar separator(){#if defined(Q_OS_WIN)return u'\\';#elsereturn u'/';#endif}static boolsetCurrent(const QString &path);staticinline QDir current() {returnQDir(currentPath()); }static QString currentPath();staticinline QDir home() {returnQDir(homePath()); }static QString homePath();staticinline QDir root() {returnQDir(rootPath()); }static QString rootPath();staticinline QDir temp() {returnQDir(tempPath()); }static QString tempPath();#if QT_CONFIG(regularexpression)static boolmatch(const QStringList &filters,const QString &fileName);static boolmatch(const QString &filter,const QString &fileName);#endifstatic QString cleanPath(const QString &path);voidrefresh()const;protected:explicitQDir(QDirPrivate &d); QSharedDataPointer<QDirPrivate> d_ptr;private:friend Q_CORE_EXPORT boolcomparesEqual(const QDir &lhs,const QDir &rhs);Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QDir)friend class QDirIterator;friend class QDirListing;friend class QDirListingPrivate;// Q_DECLARE_PRIVATE equivalent for shared data pointers QDirPrivate *d_func();const QDirPrivate *d_func()const{return d_ptr.constData(); }};Q_DECLARE_SHARED(QDir)Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::Filters)Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::SortFlags)#ifndef QT_NO_DEBUG_STREAMclass QDebug; Q_CORE_EXPORT QDebug operator<<(QDebug debug,QDir::Filters filters); Q_CORE_EXPORT QDebug operator<<(QDebug debug,const QDir &dir);#endif QT_END_NAMESPACE #endif// QDIR_H
close