DtkCore
DTK Core module
载入中...
搜索中...
未找到
ddcifile.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#pragma once
6
7#ifndef DTK_NO_PROJECT
8#include <DObject>
9#include <dtkcore_global.h>
10#else
11#define DCORE_BEGIN_NAMESPACE
12#define DCORE_END_NAMESPACE
13#define LIBDTKCORESHARED_EXPORT
14#define D_DECLARE_PRIVATE(Class) Class##Private *d;
15#endif
16
17#include <QStringList>
18
19QT_BEGIN_NAMESPACE
20class QIODevice;
21QT_END_NAMESPACE
22
23DCORE_BEGIN_NAMESPACE
24
25class DDciFilePrivate;
26class LIBDTKCORESHARED_EXPORT DDciFile
27#ifndef DTK_NO_PROJECT
28 : public DObject
29#endif
30{
31 D_DECLARE_PRIVATE(DDciFile)
32public:
33 enum FileType {
35 File = 1,
36 Directory = 2,
37 Symlink = 3
38 };
39
40 static void registerFileEngine();
41
42 DDciFile();
43 explicit DDciFile(const QString &fileName);
44 explicit DDciFile(const QByteArray &data);
45
46 bool isValid() const;
47 QString lastErrorString() const;
48
49 bool writeToFile(const QString &fileName) const;
50 bool writeToDevice(QIODevice *device) const;
51 QByteArray toData() const;
52
53 static constexpr int metadataSizeV1();
54
55 // for reader
56 QStringList list(const QString &dir, bool onlyFileName = false) const;
57 int childrenCount(const QString &dir) const;
58 bool exists(const QString &filePath) const;
59 FileType type(const QString &filePath) const;
60 QByteArray dataRef(const QString &filePath) const;
61 QString name(const QString &filePath) const;
62 QString symlinkTarget(const QString &filePath, bool originData = false) const;
63
64 // for writer
65 bool mkdir(const QString &filePath);
66 bool writeFile(const QString &filePath, const QByteArray &data, bool override = false);
67 bool remove(const QString &filePath);
68 bool rename(const QString &filePath, const QString &newFilePath, bool override = false);
69 bool copy(const QString &from, const QString &to);
70 bool link(const QString &source, const QString &to);
71};
72
73DCORE_END_NAMESPACE
ddcifile.h 是关于dci文件相关操作的一个类,实现了 DCI 文件的逻辑。其只是对数据的打包 dci文件的结构路径如下:
Definition ddcifile.h:30
QString name(const QString &filePath) const
获取dci内文件的文件名
bool rename(const QString &filePath, const QString &newFilePath, bool override=false)
重命名文件
QByteArray dataRef(const QString &filePath) const
获取dci内部文件的数据,以一种引用(软连接)的方式获取,不会产生数据的的复制
QString lastErrorString() const
获取上一个报错信息,为人类可读字符串,可以通过此报错信息来获取错误内容,一般情况下是因为文件不存在或者文件名过长(>62个字符)导致。
bool writeFile(const QString &filePath, const QByteArray &data, bool override=false)
写入文件
FileType
Definition ddcifile.h:33
@ UnknowFile
未知文件
Definition ddcifile.h:34
int childrenCount(const QString &dir) const
子文件计数
bool exists(const QString &filePath) const
判断文件是否存在
bool mkdir(const QString &filePath)
创建目录(注意:此目录指的是在dci文件内部的目录,而不是指的是传统目录)
bool isValid() const
判断读取的dci文件是否有效
FileType type(const QString &filePath) const
判断文件类型
bool writeToDevice(QIODevice *device) const
写入到设备,设备指的是qt中的io设备,可以在qt文档中找到相关信息
bool writeToFile(const QString &fileName) const
写入文件,在做完对于dci文件的操作之后调用此接口,为保存的作用
QStringList list(const QString &dir, bool onlyFileName=false) const
列出文件列表
bool remove(const QString &filePath)
移除文件
bool link(const QString &source, const QString &to)
链接文件
static constexpr int metadataSizeV1()
MAGIC_SIZE + VERSION_SIZE + FILE_COUNT_SIZE: 4+1+3 = 8
QByteArray toData() const
返回dci文件的原始数据,以QByteArray形式返回
QString symlinkTarget(const QString &filePath, bool originData=false) const
获取软链目标
Definition dobject.h:25