swift
fileutils.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_CFILEUTILS_H
7 #define SWIFT_MISC_CFILEUTILS_H
8 
9 #include <functional>
10 
11 #include <QDir>
12 #include <QFileInfo>
13 #include <QFileInfoList>
14 #include <QLockFile>
15 #include <QString>
16 #include <QStringList>
17 #include <Qt>
18 
19 #include "misc/swiftmiscexport.h"
20 
21 class QDateTime;
22 
23 namespace swift::misc
24 {
29  {
30  public:
32  static const QString &jsonAppendix();
33 
35  static const QString &jsonWildcardAppendix();
36 
38  static bool writeStringToFile(const QString &content, const QString &fileNameAndPath);
39 
41  static bool writeStringToLockedFile(const QString &content, const QString &fileNameAndPath);
42 
44  static QString readFileToString(const QString &fileNameAndPath);
45 
47  static QString readLockedFileToString(const QString &fileNameAndPath);
48 
50  static QString readFileToString(const QString &filePath, const QString &fileName);
51 
53  static QString readLockedFileToString(const QString &filePath, const QString &fileName);
54 
56  static bool writeByteArrayToFile(const QByteArray &data, const QString &fileNameAndPath);
57 
60  static QString appendFilePaths(const QString &path1, const QString &path2);
61 
64  static QString appendFilePathsAndFixUnc(const QString &path1, const QString &path2);
65 
68  static QString appendFilePaths(const QString &path1, const QString &path2, const QString &path3);
69 
72  static QString appendFilePathsAndFixUnc(const QString &path1, const QString &path2, const QString &path3);
73 
75  static QString pathUp(const QString &path);
76 
78  static QString stripFileFromPath(const QString &path);
79 
81  static QString stripFirstSlashPart(const QString &path);
82 
84  static QStringList stripFirstSlashParts(const QStringList &paths);
85 
87  static QString stripLeadingSlashOrDriveLetter(const QString &path);
88 
90  static QStringList stripLeadingSlashOrDriveLetters(const QStringList &paths);
91 
93  static QString lastPathSegment(const QString &path);
94 
96  static QString normalizeFilePathToQtStandard(const QString &filePath);
97 
101  static QStringList makeDirectoriesRelative(const QStringList &directories, const QString &rootDirectory,
102  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
103 
105  static bool sameDirectories(const QStringList &dirs1, const QStringList &dirs2,
106  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
107 
109  static Qt::CaseSensitivity osFileNameCaseSensitivity();
110 
112  static bool isFileNameCaseSensitive();
113 
115  static bool matchesExcludeDirectory(const QString &directoryPath, const QString &excludePattern,
116  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
117 
119  static bool isExcludedDirectory(const QDir &directory, const QStringList &excludeDirectories,
120  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
121 
123  static bool isExcludedDirectory(const QFileInfo &fileInfo, const QStringList &excludeDirectories,
124  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
125 
127  static bool isExcludedDirectory(const QString &directoryPath, const QStringList &excludeDirectories,
128  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
129 
131  static QStringList removeSubDirectories(const QStringList &directories,
132  Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
133 
135  static QString findFirstExisting(const QStringList &filesOrDirectory);
136 
138  static QString findFirstFile(const QDir &dir, bool recursive, const QStringList &nameFilters = {},
139  const QStringList &excludeDirectories = {},
140  std::function<bool(const QFileInfo &)> predicate = {});
141 
143  static bool containsFile(const QDir &dir, bool recursive, const QStringList &nameFilters = {},
144  const QStringList &excludeDirectories = {},
145  std::function<bool(const QFileInfo &)> predicate = {});
146 
149  static QString findFirstNewerThan(const QDateTime &time, const QDir &dir, bool recursive,
150  const QStringList &nameFilters = {},
151  const QStringList &excludeDirectories = {});
152 
154  static bool containsFileNewerThan(const QDateTime &time, const QDir &dir, bool recursive,
155  const QStringList &nameFilters = {},
156  const QStringList &excludeDirectories = {});
157 
159  static QFileInfoList enumerateFiles(const QDir &dir, bool recursive, const QStringList &nameFilters = {},
160  const QStringList &excludeDirectories = {},
161  std::function<bool(const QFileInfo &)> predicate = {});
162 
164  static QFileInfo findLastModified(const QDir &dir, bool recursive, const QStringList &nameFilters = {},
165  const QStringList &excludeDirectories = {});
166 
168  static QFileInfo findLastCreated(const QDir &dir, bool recursive, const QStringList &nameFilters = {},
169  const QStringList &excludeDirectories = {});
170 
172  static const QStringList &getSwiftExecutables();
173 
175  static QStringList getBaseNamesOnly(const QStringList &fileNames);
176 
178  static QStringList getFileNamesOnly(const QStringList &fileNames);
179 
181  static QString lockFileError(const QLockFile &lockFile);
182 
186  static QString fixWindowsUncPath(const QString &filePath);
187 
190  static QStringList fixWindowsUncPaths(const QStringList &filePaths);
191 
193  static bool isWindowsUncPath(const QString &filePath);
194 
196  static QString windowsUncMachine(const QString &filePath);
197 
199  static QSet<QString> windowsUncMachines(const QSet<QString> &paths);
200 
202  static QString toWindowsLocalPath(const QString &path);
203 
205  static QString humanReadableFileSize(qint64 size);
206 
208  static const QStringList &executableSuffixes();
209 
211  static bool isExecutableFile(const QString &fileName);
212 
214  static bool isSwiftInstaller(const QString &fileName);
215  };
216 } // namespace swift::misc
217 
218 #endif // SWIFT_MISC_CFILEUTILS_H
Utility class for file operations.
Definition: fileutils.h:29
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.