QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCFileHelper.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QByteArray>
4#include <QtCore/QCryptographicHash>
5#include <QtCore/QString>
6#include <QtCore/QTemporaryFile>
7#include <QtCore/QUrl>
8
9#include <memory>
10
12namespace QGCFileHelper {
13
14// ============================================================================
15// File Reading (with optional decompression)
16// ============================================================================
17
25QByteArray readFile(const QString &filePath, QString *errorString = nullptr,
26 qint64 maxBytes = 0);
27
28// ============================================================================
29// Buffer Configuration
30// ============================================================================
31
33constexpr size_t kBufferSizeMin = 16384; // 16KB
34
36constexpr size_t kBufferSizeMax = 131072; // 128KB
37
39constexpr size_t kBufferSizeDefault = 65536; // 64KB
40
45size_t optimalBufferSize(const QString &path = QString());
46
47// ============================================================================
48// Path Utilities
49// ============================================================================
50
54bool exists(const QString &path);
55
61QString joinPath(const QString &dir, const QString &name);
62
66bool ensureDirectoryExists(const QString &path);
67
71bool ensureParentExists(const QString &filePath);
72
77bool copyDirectoryRecursively(const QString &sourcePath, const QString &destPath);
78
83bool moveFileOrCopy(const QString &sourcePath, const QString &destPath);
84
85// ============================================================================
86// Safe File Operations
87// ============================================================================
88
94bool atomicWrite(const QString &filePath, const QByteArray &data);
95
96// ============================================================================
97// Disk Space Utilities
98// ============================================================================
99
105bool hasSufficientDiskSpace(const QString &path, qint64 requiredBytes, double margin = 1.1);
106
110qint64 availableDiskSpace(const QString &path);
111
112// ============================================================================
113// URL/Path Utilities
114// ============================================================================
115
120QString toLocalPath(const QString &urlOrPath);
121
123QString toLocalPath(const QUrl &url);
124
128bool isLocalPath(const QString &urlOrPath);
129
133bool isQtResource(const QString &path);
134
135// ============================================================================
136// Checksum Utilities
137// ============================================================================
138
140constexpr QCryptographicHash::Algorithm kDefaultHashAlgorithm = QCryptographicHash::Sha256;
141
146QString computeFileHash(const QString &filePath,
147 QCryptographicHash::Algorithm algorithm = kDefaultHashAlgorithm);
148
155QString computeDecompressedFileHash(const QString &filePath,
156 QCryptographicHash::Algorithm algorithm = kDefaultHashAlgorithm);
157
162QString computeHash(const QByteArray &data,
163 QCryptographicHash::Algorithm algorithm = kDefaultHashAlgorithm);
164
170bool verifyFileHash(const QString &filePath, const QString &expectedHash,
171 QCryptographicHash::Algorithm algorithm = kDefaultHashAlgorithm);
172
176QString hashAlgorithmName(QCryptographicHash::Algorithm algorithm);
177
178// ============================================================================
179// Temporary File Utilities
180// ============================================================================
181
187std::unique_ptr<QTemporaryFile> createTempFile(const QByteArray &data,
188 const QString &templateName = QString());
189
194std::unique_ptr<QTemporaryFile> createTempCopy(const QString &sourcePath,
195 const QString &templateName = QString());
196
199QString tempDirectory();
200
205QString uniqueTempPath(const QString &templateName = QString());
206
213bool replaceFileFromTemp(QTemporaryFile *tempFile, const QString &targetPath,
214 const QString &backupPath = QString());
215
216} // namespace QGCFileHelper
QString errorString
Generic file system helper utilities.
qint64 availableDiskSpace(const QString &path)
bool isLocalPath(const QString &urlOrPath)
bool isQtResource(const QString &path)
QString uniqueTempPath(const QString &templateName)
constexpr size_t kBufferSizeMax
Maximum buffer size for I/O operations.
bool ensureParentExists(const QString &filePath)
bool moveFileOrCopy(const QString &sourcePath, const QString &destPath)
QString hashAlgorithmName(QCryptographicHash::Algorithm algorithm)
QString computeHash(const QByteArray &data, QCryptographicHash::Algorithm algorithm)
bool copyDirectoryRecursively(const QString &sourcePath, const QString &destPath)
std::unique_ptr< QTemporaryFile > createTempCopy(const QString &sourcePath, const QString &templateName)
bool atomicWrite(const QString &filePath, const QByteArray &data)
QString toLocalPath(const QString &urlOrPath)
bool hasSufficientDiskSpace(const QString &path, qint64 requiredBytes, double margin)
bool ensureDirectoryExists(const QString &path)
constexpr QCryptographicHash::Algorithm kDefaultHashAlgorithm
Default hash algorithm for checksum operations.
std::unique_ptr< QTemporaryFile > createTempFile(const QByteArray &data, const QString &templateName)
QString joinPath(const QString &dir, const QString &name)
bool exists(const QString &path)
QString computeFileHash(const QString &filePath, QCryptographicHash::Algorithm algorithm)
constexpr size_t kBufferSizeMin
Minimum buffer size for I/O operations.
size_t optimalBufferSize(const QString &path)
bool replaceFileFromTemp(QTemporaryFile *tempFile, const QString &targetPath, const QString &backupPath)
bool verifyFileHash(const QString &filePath, const QString &expectedHash, QCryptographicHash::Algorithm algorithm)
QString computeDecompressedFileHash(const QString &filePath, QCryptographicHash::Algorithm algorithm)
QByteArray readFile(const QString &filePath, QString *errorString, qint64 maxBytes)
QString tempDirectory()
constexpr size_t kBufferSizeDefault
Default buffer size when detection unavailable.