qdir.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:9k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtCore module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QDIR_H
  38. #define QDIR_H
  39. #include <QtCore/qstring.h>
  40. #include <QtCore/qfileinfo.h>
  41. #include <QtCore/qstringlist.h>
  42. QT_BEGIN_HEADER
  43. QT_BEGIN_NAMESPACE
  44. QT_MODULE(Core)
  45. class QDirPrivate;
  46. class Q_CORE_EXPORT QDir
  47. {
  48. protected:
  49.     QDirPrivate *d_ptr;
  50. private:
  51.     Q_DECLARE_PRIVATE(QDir)
  52. public:
  53.     enum Filter { Dirs        = 0x001,
  54.                   Files       = 0x002,
  55.                   Drives      = 0x004,
  56.                   NoSymLinks  = 0x008,
  57.                   AllEntries  = Dirs | Files | Drives,
  58.                   TypeMask    = 0x00f,
  59. #ifdef QT3_SUPPORT
  60.                   All         = AllEntries,
  61. #endif
  62.                   Readable    = 0x010,
  63.                   Writable    = 0x020,
  64.                   Executable  = 0x040,
  65.                   PermissionMask    = 0x070,
  66. #ifdef QT3_SUPPORT
  67.                   RWEMask     = 0x070,
  68. #endif
  69.                   Modified    = 0x080,
  70.                   Hidden      = 0x100,
  71.                   System      = 0x200,
  72.                  
  73.                   AccessMask  = 0x3F0,
  74.                   AllDirs       = 0x400,
  75.                   CaseSensitive = 0x800,
  76.                   NoDotAndDotDot = 0x1000,
  77.                   NoFilter = -1
  78. #ifdef QT3_SUPPORT
  79.                   ,DefaultFilter = NoFilter
  80. #endif
  81.     };
  82.     Q_DECLARE_FLAGS(Filters, Filter)
  83. #ifdef QT3_SUPPORT
  84.     typedef Filters FilterSpec;
  85. #endif
  86.     enum SortFlag { Name        = 0x00,
  87.                     Time        = 0x01,
  88.                     Size        = 0x02,
  89.                     Unsorted    = 0x03,
  90.                     SortByMask  = 0x03,
  91.                     DirsFirst   = 0x04,
  92.                     Reversed    = 0x08,
  93.                     IgnoreCase  = 0x10,
  94.                     DirsLast    = 0x20,
  95.                     LocaleAware = 0x40, 
  96.                     Type        = 0x80,
  97.                     NoSort = -1
  98. #ifdef QT3_SUPPORT
  99.                   ,DefaultSort = NoSort
  100. #endif
  101.     };
  102.     Q_DECLARE_FLAGS(SortFlags, SortFlag)
  103.     QDir(const QDir &);
  104.     QDir(const QString &path = QString());
  105.     QDir(const QString &path, const QString &nameFilter,
  106.          SortFlags sort = SortFlags(Name | IgnoreCase), Filters filter = AllEntries);
  107.     ~QDir();
  108.     QDir &operator=(const QDir &);
  109.     QDir &operator=(const QString &path);
  110.     void setPath(const QString &path);
  111.     QString path() const;
  112.     QString absolutePath() const;
  113.     QString canonicalPath() const;
  114.     static void addResourceSearchPath(const QString &path);
  115.     static void setSearchPaths(const QString &prefix, const QStringList &searchPaths);
  116.     static void addSearchPath(const QString &prefix, const QString &path);
  117.     static QStringList searchPaths(const QString &prefix);
  118.     QString dirName() const;
  119.     QString filePath(const QString &fileName) const;
  120.     QString absoluteFilePath(const QString &fileName) const;
  121.     QString relativeFilePath(const QString &fileName) const;
  122. #ifdef QT_DEPRECATED
  123.     QT_DEPRECATED static QString convertSeparators(const QString &pathName);
  124. #endif
  125.     static QString toNativeSeparators(const QString &pathName);
  126.     static QString fromNativeSeparators(const QString &pathName);
  127.     bool cd(const QString &dirName);
  128.     bool cdUp();
  129.     QStringList nameFilters() const;
  130.     void setNameFilters(const QStringList &nameFilters);
  131.     Filters filter() const;
  132.     void setFilter(Filters filter);
  133.     SortFlags sorting() const;
  134.     void setSorting(SortFlags sort);
  135.     uint count() const;
  136.     QString operator[](int) const;
  137.     static QStringList nameFiltersFromString(const QString &nameFilter);
  138.     QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const;
  139.     QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter,
  140.                           SortFlags sort = NoSort) const;
  141.     QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const;
  142.     QFileInfoList entryInfoList(const QStringList &nameFilters, Filters filters = NoFilter,
  143.                                 SortFlags sort = NoSort) const;
  144.     bool mkdir(const QString &dirName) const;
  145.     bool rmdir(const QString &dirName) const;
  146.     bool mkpath(const QString &dirPath) const;
  147.     bool rmpath(const QString &dirPath) const;
  148.     bool isReadable() const;
  149.     bool exists() const;
  150.     bool isRoot() const;
  151.     static bool isRelativePath(const QString &path);
  152.     inline static bool isAbsolutePath(const QString &path) { return !isRelativePath(path); }
  153.     bool isRelative() const;
  154.     inline bool isAbsolute() const { return !isRelative(); }
  155.     bool makeAbsolute();
  156.     bool operator==(const QDir &dir) const;
  157.     inline bool operator!=(const QDir &dir) const {  return !operator==(dir); }
  158.     bool remove(const QString &fileName);
  159.     bool rename(const QString &oldName, const QString &newName);
  160.     bool exists(const QString &name) const;
  161.     static QFileInfoList drives();
  162.     static QChar separator();
  163.     static bool setCurrent(const QString &path);
  164.     static inline QDir current() { return QDir(currentPath()); }
  165.     static QString currentPath();
  166.     static inline QDir home() { return QDir(homePath()); }
  167.     static QString homePath();
  168.     static inline QDir root() { return QDir(rootPath()); }
  169.     static QString rootPath();
  170.     static inline QDir temp() { return QDir(tempPath()); }
  171.     static QString tempPath();
  172. #ifndef QT_NO_REGEXP
  173.     static bool match(const QStringList &filters, const QString &fileName);
  174.     static bool match(const QString &filter, const QString &fileName);
  175. #endif
  176.     static QString cleanPath(const QString &path);
  177.     void refresh() const;
  178. #ifdef QT3_SUPPORT
  179.     typedef SortFlags SortSpec;
  180.     inline QT3_SUPPORT QString absPath() const { return absolutePath(); }
  181.     inline QT3_SUPPORT QString absFilePath(const QString &fileName, bool acceptAbsPath = true) const
  182.        { Q_UNUSED(acceptAbsPath); return absoluteFilePath(fileName); }
  183.     QT3_SUPPORT bool matchAllDirs() const;
  184.     QT3_SUPPORT void setMatchAllDirs(bool on);
  185.     inline QT3_SUPPORT QStringList entryList(const QString &nameFilter, Filters filters = NoFilter,
  186.                                            SortFlags sort = NoSort) const
  187.     { return entryList(nameFiltersFromString(nameFilter), filters, sort); }
  188.     inline QT3_SUPPORT QFileInfoList entryInfoList(const QString &nameFilter,
  189.                                                  Filters filters = NoFilter,
  190.                                                  SortFlags sort = NoSort) const
  191.     { return entryInfoList(nameFiltersFromString(nameFilter), filters, sort); }
  192.     QT3_SUPPORT QString nameFilter() const;
  193.     QT3_SUPPORT void setNameFilter(const QString &nameFilter);
  194.     inline QT3_SUPPORT bool mkdir(const QString &dirName, bool acceptAbsPath) const
  195.         { Q_UNUSED(acceptAbsPath); return mkdir(dirName); }
  196.     inline QT3_SUPPORT bool rmdir(const QString &dirName, bool acceptAbsPath) const
  197.         { Q_UNUSED(acceptAbsPath); return rmdir(dirName); }
  198.     inline QT3_SUPPORT void convertToAbs() { makeAbsolute(); }
  199.     inline QT3_SUPPORT static QString currentDirPath() { return currentPath(); }
  200.     inline QT3_SUPPORT static QString homeDirPath() { return homePath(); }
  201.     inline QT3_SUPPORT static QString rootDirPath() { return rootPath(); }
  202.     inline QT3_SUPPORT static QString cleanDirPath(const QString &name) { return cleanPath(name); }
  203. #endif
  204. };
  205. Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::Filters)
  206. Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::SortFlags)
  207. #ifndef QT_NO_DEBUG_STREAM
  208. class QDebug;
  209. Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters);
  210. Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QDir &dir);
  211. #endif
  212. QT_END_NAMESPACE
  213. QT_END_HEADER
  214. #endif // QDIR_H