6 #ifndef SWIFT_MISC_CFILEUTILS_H
7 #define SWIFT_MISC_CFILEUTILS_H
13 #include <QFileInfoList>
16 #include <QStringList>
32 static const QString &jsonAppendix();
35 static const QString &jsonWildcardAppendix();
38 static bool writeStringToFile(
const QString &content,
const QString &fileNameAndPath);
41 static bool writeStringToLockedFile(
const QString &content,
const QString &fileNameAndPath);
44 static QString readFileToString(
const QString &fileNameAndPath);
47 static QString readLockedFileToString(
const QString &fileNameAndPath);
50 static QString readFileToString(
const QString &filePath,
const QString &fileName);
53 static QString readLockedFileToString(
const QString &filePath,
const QString &fileName);
56 static bool writeByteArrayToFile(
const QByteArray &data,
const QString &fileNameAndPath);
60 static QString appendFilePaths(
const QString &path1,
const QString &path2);
64 static QString appendFilePathsAndFixUnc(
const QString &path1,
const QString &path2);
68 static QString appendFilePaths(
const QString &path1,
const QString &path2,
const QString &path3);
72 static QString appendFilePathsAndFixUnc(
const QString &path1,
const QString &path2,
const QString &path3);
75 static QString pathUp(
const QString &path);
78 static QString stripFileFromPath(
const QString &path);
81 static QString stripFirstSlashPart(
const QString &path);
84 static QStringList stripFirstSlashParts(
const QStringList &paths);
87 static QString stripLeadingSlashOrDriveLetter(
const QString &path);
90 static QStringList stripLeadingSlashOrDriveLetters(
const QStringList &paths);
93 static QString lastPathSegment(
const QString &path);
96 static QString normalizeFilePathToQtStandard(
const QString &filePath);
101 static QStringList makeDirectoriesRelative(
const QStringList &directories,
const QString &rootDirectory,
102 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
105 static bool sameDirectories(
const QStringList &dirs1,
const QStringList &dirs2,
106 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
109 static Qt::CaseSensitivity osFileNameCaseSensitivity();
112 static bool isFileNameCaseSensitive();
115 static bool matchesExcludeDirectory(
const QString &directoryPath,
const QString &excludePattern,
116 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
119 static bool isExcludedDirectory(
const QDir &directory,
const QStringList &excludeDirectories,
120 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
123 static bool isExcludedDirectory(
const QFileInfo &fileInfo,
const QStringList &excludeDirectories,
124 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
127 static bool isExcludedDirectory(
const QString &directoryPath,
const QStringList &excludeDirectories,
128 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
131 static QStringList removeSubDirectories(
const QStringList &directories,
132 Qt::CaseSensitivity cs = osFileNameCaseSensitivity());
135 static QString findFirstExisting(
const QStringList &filesOrDirectory);
138 static QString findFirstFile(
const QDir &dir,
bool recursive,
const QStringList &nameFilters = {},
139 const QStringList &excludeDirectories = {},
140 std::function<bool(
const QFileInfo &)> predicate = {});
143 static bool containsFile(
const QDir &dir,
bool recursive,
const QStringList &nameFilters = {},
144 const QStringList &excludeDirectories = {},
145 std::function<bool(
const QFileInfo &)> predicate = {});
149 static QString findFirstNewerThan(
const QDateTime &time,
const QDir &dir,
bool recursive,
150 const QStringList &nameFilters = {},
151 const QStringList &excludeDirectories = {});
154 static bool containsFileNewerThan(
const QDateTime &time,
const QDir &dir,
bool recursive,
155 const QStringList &nameFilters = {},
156 const QStringList &excludeDirectories = {});
159 static QFileInfoList enumerateFiles(
const QDir &dir,
bool recursive,
const QStringList &nameFilters = {},
160 const QStringList &excludeDirectories = {},
161 std::function<bool(
const QFileInfo &)> predicate = {});
164 static QFileInfo findLastModified(
const QDir &dir,
bool recursive,
const QStringList &nameFilters = {},
165 const QStringList &excludeDirectories = {});
168 static QFileInfo findLastCreated(
const QDir &dir,
bool recursive,
const QStringList &nameFilters = {},
169 const QStringList &excludeDirectories = {});
172 static const QStringList &getSwiftExecutables();
175 static QStringList getBaseNamesOnly(
const QStringList &fileNames);
178 static QStringList getFileNamesOnly(
const QStringList &fileNames);
181 static QString lockFileError(
const QLockFile &lockFile);
186 static QString fixWindowsUncPath(
const QString &filePath);
190 static QStringList fixWindowsUncPaths(
const QStringList &filePaths);
193 static bool isWindowsUncPath(
const QString &filePath);
196 static QString windowsUncMachine(
const QString &filePath);
199 static QSet<QString> windowsUncMachines(
const QSet<QString> &paths);
202 static QString toWindowsLocalPath(
const QString &path);
205 static QString humanReadableFileSize(qint64 size);
208 static const QStringList &executableSuffixes();
211 static bool isExecutableFile(
const QString &fileName);
214 static bool isSwiftInstaller(
const QString &fileName);
Utility class for file operations.
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.