dtkio
dtk library for dtkio.
载入中...
搜索中...
未找到
dfile.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DFILE_H
6#define DFILE_H
7
8#include <QObject>
9#include <QUrl>
10#include <QScopedPointer>
11
12#include <DError>
13#include <DExpected>
14
15#include "dtkio_global.h"
16#include "dtkiotypes.h"
17
18DIO_BEGIN_NAMESPACE
19class DFileFuture;
20class DFilePrivate;
21class DFile
22{
23public:
24 explicit DFile(const QUrl &url);
25 ~DFile();
26
27 DTK_CORE_NAMESPACE::DExpected<QUrl> url() const;
28 DTK_CORE_NAMESPACE::DExpected<bool> open(OpenFlags mode);
29 DTK_CORE_NAMESPACE::DExpected<bool> close();
30 bool isOpen() const;
31
32 DTK_CORE_NAMESPACE::DExpected<size_t> read(QByteArray *data, size_t maxSize);
33 DTK_CORE_NAMESPACE::DExpected<QByteArray> readAll();
34 DTK_CORE_NAMESPACE::DExpected<size_t> write(const QByteArray &data, size_t len);
35 DTK_CORE_NAMESPACE::DExpected<size_t> write(const QByteArray &data);
36
37 DTK_CORE_NAMESPACE::DExpected<bool> seek(ssize_t pos, SeekType type = SeekType::Begin) const;
38 DTK_CORE_NAMESPACE::DExpected<ssize_t> pos() const;
39 DTK_CORE_NAMESPACE::DExpected<bool> flush();
40 DTK_CORE_NAMESPACE::DExpected<size_t> size() const;
41 bool exists() const;
42
43 DTK_CORE_NAMESPACE::DExpected<Permissions> permissions() const;
44 DTK_CORE_NAMESPACE::DExpected<bool> setPermissions(Permissions permission);
45 DTK_CORE_NAMESPACE::DExpected<bool> setAttribute(AttributeID id, const QVariant &value);
46 DTK_CORE_NAMESPACE::DExpected<bool> setAttribute(const QByteArray &key, const QVariant &value, const AttributeType type, const FileQueryInfoFlags flag = FileQueryInfoFlags::TypeNoFollowSymlinks);
47
48 [[nodiscard]] DFileFuture *openAsync(OpenFlags mode, int ioPriority, QObject *parent = nullptr);
49 [[nodiscard]] DFileFuture *closeAsync(int ioPriority, QObject *parent = nullptr);
50 [[nodiscard]] DFileFuture *readAsync(size_t maxSize, int ioPriority, QObject *parent = nullptr);
51 [[nodiscard]] DFileFuture *readAllAsync(int ioPriority, QObject *parent = nullptr);
52 [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, size_t len, int ioPriority, QObject *parent = nullptr);
53 [[nodiscard]] DFileFuture *writeAsync(const QByteArray &data, int ioPriority, QObject *parent = nullptr);
54 [[nodiscard]] DFileFuture *flushAsync(int ioPriority, QObject *parent = nullptr);
55 [[nodiscard]] DFileFuture *sizeAsync(int ioPriority, QObject *parent = nullptr);
56 [[nodiscard]] DFileFuture *existsAsync(int ioPriority, QObject *parent = nullptr);
57 [[nodiscard]] DFileFuture *permissionsAsync(int ioPriority, QObject *parent = nullptr);
58 [[nodiscard]] DFileFuture *setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent = nullptr);
59
60 DTK_CORE_NAMESPACE::DError lastError() const;
61
62private:
63 QScopedPointer<DFilePrivate> d;
64};
65DIO_END_NAMESPACE
66
67#endif // DFILE_H
处理文件异步操作的结果
Definition dfilefuture.h:18
用以管理文件的类,对文件进行打开、关闭、写入等操作,以及获取其状态等
Definition dfile.h:22
DFileFuture * writeAsync(const QByteArray &data, int ioPriority, QObject *parent=nullptr)
以异步的方式写入文件数据
DFileFuture * writeAsync(const QByteArray &data, size_t len, int ioPriority, QObject *parent=nullptr)
以异步的方式写入文件数据
DTK_CORE_NAMESPACE::DExpected< bool > setAttribute(AttributeID id, const QVariant &value)
设置文件属性
DFileFuture * closeAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式关闭文件
DFileFuture * readAsync(size_t maxSize, int ioPriority, QObject *parent=nullptr)
以异步的方式读取文件数据
DTK_CORE_NAMESPACE::DExpected< QUrl > url() const
返回构造当前文件的url参数
DTK_CORE_NAMESPACE::DExpected< bool > flush()
刷新文件当前输出流,并强制写出缓冲的输出字节
bool exists() const
查看文件是否存在
DTK_CORE_NAMESPACE::DExpected< bool > close()
关闭文件,同时清理掉DFile对象中的输入输出流信息
DFileFuture * openAsync(OpenFlags mode, int ioPriority, QObject *parent=nullptr)
以异步的方式打开文件
DFileFuture * readAllAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式读取文件数据
DTK_CORE_NAMESPACE::DExpected< bool > open(OpenFlags mode)
以指定模式来打开目标文件
DTK_CORE_NAMESPACE::DExpected< size_t > size() const
获取文件的大小
DFileFuture * existsAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式获取文件是否存在
DTK_CORE_NAMESPACE::DExpected< size_t > write(const QByteArray &data, size_t len)
向文件中写入指定长度的数据
DTK_CORE_NAMESPACE::DExpected< size_t > read(QByteArray *data, size_t maxSize)
从文件中读取数据
DTK_CORE_NAMESPACE::DExpected< QByteArray > readAll()
将文件中数据全部读出
DTK_CORE_NAMESPACE::DExpected< bool > setPermissions(Permissions permission)
设置文件的权限状态
DTK_CORE_NAMESPACE::DExpected< size_t > write(const QByteArray &data)
向文件中写入数据
DTK_CORE_NAMESPACE::DExpected< ssize_t > pos() const
获取文件当前位置的偏移量
DTK_CORE_NAMESPACE::DError lastError() const
获取当前文件操作的错误码
DTK_CORE_NAMESPACE::DExpected< Permissions > permissions() const
获取文件的权限状态
DFileFuture * flushAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式刷新文件输出流并强制输出
DTK_CORE_NAMESPACE::DExpected< bool > setAttribute(const QByteArray &key, const QVariant &value, const AttributeType type, const FileQueryInfoFlags flag=FileQueryInfoFlags::TypeNoFollowSymlinks)
设置文件属性
DFile(const QUrl &url)
构造函数, 通过 传入的url字符串 创建一个Dfile对象管理该url指向的文件
DFileFuture * permissionsAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式获取文件的权限属性
DFileFuture * sizeAsync(int ioPriority, QObject *parent=nullptr)
以异步的方式获取文件的大小
bool isOpen() const
返回文件是否打开
DFileFuture * setPermissionsAsync(Permissions permission, int ioPriority, QObject *parent=nullptr)
以异步的方式设置文件的权限属性
DTK_CORE_NAMESPACE::DExpected< bool > seek(ssize_t pos, SeekType type=SeekType::Begin) const
设置文件当前的位置
FileQueryInfoFlags
查询文件信息的标志
Definition dtkiotypes.h:201
SeekType
文件偏移类型
Definition dtkiotypes.h:161
AttributeID
文件属性(ID)
Definition dtkiotypes.h:47
AttributeType
文件属性类型
Definition dtkiotypes.h:188