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

系统编程

开发平台:

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 QFILE_H
  38. #define QFILE_H
  39. #include <QtCore/qiodevice.h>
  40. #include <QtCore/qstring.h>
  41. #include <stdio.h>
  42. #ifdef open
  43. #error qfile.h must be included before any header file that defines open
  44. #endif
  45. QT_BEGIN_HEADER
  46. QT_BEGIN_NAMESPACE
  47. QT_MODULE(Core)
  48. class QAbstractFileEngine;
  49. class QFilePrivate;
  50. class Q_CORE_EXPORT QFile : public QIODevice
  51. {
  52. #ifndef QT_NO_QOBJECT
  53.     Q_OBJECT
  54. #endif
  55.     Q_DECLARE_PRIVATE(QFile)
  56. public:
  57.     enum FileError {
  58.         NoError = 0,
  59.         ReadError = 1,
  60.         WriteError = 2,
  61.         FatalError = 3,
  62.         ResourceError = 4,
  63.         OpenError = 5,
  64.         AbortError = 6,
  65.         TimeOutError = 7,
  66.         UnspecifiedError = 8,
  67.         RemoveError = 9,
  68.         RenameError = 10,
  69.         PositionError = 11,
  70.         ResizeError = 12,
  71.         PermissionsError = 13,
  72.         CopyError = 14
  73. #ifdef QT3_SUPPORT
  74.         , ConnectError = 30
  75. #endif
  76.     };
  77.     enum Permission {
  78.         ReadOwner = 0x4000, WriteOwner = 0x2000, ExeOwner = 0x1000,
  79.         ReadUser  = 0x0400, WriteUser  = 0x0200, ExeUser  = 0x0100,
  80.         ReadGroup = 0x0040, WriteGroup = 0x0020, ExeGroup = 0x0010,
  81.         ReadOther = 0x0004, WriteOther = 0x0002, ExeOther = 0x0001
  82.     };
  83.     Q_DECLARE_FLAGS(Permissions, Permission)
  84.     QFile();
  85.     QFile(const QString &name);
  86. #ifndef QT_NO_QOBJECT
  87.     explicit QFile(QObject *parent);
  88.     QFile(const QString &name, QObject *parent);
  89. #endif
  90.     ~QFile();
  91.     FileError error() const;
  92.     void unsetError();
  93.     QString fileName() const;
  94.     void setFileName(const QString &name);
  95.     typedef QByteArray (*EncoderFn)(const QString &fileName);
  96.     typedef QString (*DecoderFn)(const QByteArray &localfileName);
  97.     static QByteArray encodeName(const QString &fileName);
  98.     static QString decodeName(const QByteArray &localFileName);
  99.     inline static QString decodeName(const char *localFileName)
  100.         { return decodeName(QByteArray(localFileName)); };
  101.     static void setEncodingFunction(EncoderFn);
  102.     static void setDecodingFunction(DecoderFn);
  103.     bool exists() const;
  104.     static bool exists(const QString &fileName);
  105.     QString readLink() const;
  106.     static QString readLink(const QString &fileName);
  107.     inline QString symLinkTarget() const { return readLink(); }
  108.     inline static QString symLinkTarget(const QString &fileName) { return readLink(fileName); }
  109.     bool remove();
  110.     static bool remove(const QString &fileName);
  111.     bool rename(const QString &newName);
  112.     static bool rename(const QString &oldName, const QString &newName);
  113.     bool link(const QString &newName);
  114.     static bool link(const QString &oldname, const QString &newName);
  115.     bool copy(const QString &newName);
  116.     static bool copy(const QString &fileName, const QString &newName);
  117.     bool isSequential() const;
  118.     bool open(OpenMode flags);
  119.     bool open(FILE *f, OpenMode flags);
  120.     bool open(int fd, OpenMode flags);
  121.     virtual void close();
  122.     qint64 size() const;
  123.     qint64 pos() const;
  124.     bool seek(qint64 offset);
  125.     bool atEnd() const;
  126.     bool flush();
  127.     bool resize(qint64 sz);
  128.     static bool resize(const QString &filename, qint64 sz);
  129.     Permissions permissions() const;
  130.     static Permissions permissions(const QString &filename);
  131.     bool setPermissions(Permissions permissionSpec);
  132.     static bool setPermissions(const QString &filename, Permissions permissionSpec);
  133.     int handle() const;
  134.     enum MemoryMapFlags {
  135.         NoOptions = 0
  136.     };
  137.     uchar *map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions);
  138.     bool unmap(uchar *address);
  139.     virtual QAbstractFileEngine *fileEngine() const;
  140. #ifdef QT3_SUPPORT
  141.     typedef Permission PermissionSpec;
  142.     inline QT3_SUPPORT QString name() const { return fileName(); }
  143.     inline QT3_SUPPORT void setName(const QString &aName) { setFileName(aName); }
  144.     inline QT3_SUPPORT bool open(OpenMode aFlags, FILE *f) { return open(f, aFlags); }
  145.     inline QT3_SUPPORT bool open(OpenMode aFlags, int fd) { return open(fd, aFlags); }
  146. #endif
  147. protected:
  148. #ifdef QT_NO_QOBJECT
  149.     QFile(QFilePrivate &dd);
  150. #else
  151.     QFile(QFilePrivate &dd, QObject *parent = 0);
  152. #endif
  153.     qint64 readData(char *data, qint64 maxlen);
  154.     qint64 writeData(const char *data, qint64 len);
  155.     qint64 readLineData(char *data, qint64 maxlen);
  156. private:
  157.     Q_DISABLE_COPY(QFile)
  158. };
  159. Q_DECLARE_OPERATORS_FOR_FLAGS(QFile::Permissions)
  160. QT_END_NAMESPACE
  161. QT_END_HEADER
  162. #endif // QFILE_H