diff --git a/src/blackmisc/fileutils.cpp b/src/blackmisc/fileutils.cpp index bcb30bae3..d1d0dccd1 100644 --- a/src/blackmisc/fileutils.cpp +++ b/src/blackmisc/fileutils.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -48,6 +49,13 @@ namespace BlackMisc return true; } + bool CFileUtils::writeStringToLockedFile(const QString &content, const QString &fileNameAndPath) + { + QLockFile lock(fileNameAndPath + ".lock"); + lock.lock(); + return writeStringToFile(content, fileNameAndPath); + } + QString CFileUtils::readFileToString(const QString &fileNameAndPath) { QFile file(fileNameAndPath); @@ -58,11 +66,23 @@ namespace BlackMisc return content; } + QString CFileUtils::readLockedFileToString(const QString &fileNameAndPath) + { + QLockFile lock(fileNameAndPath + ".lock"); + lock.lock(); + return readFileToString(fileNameAndPath); + } + QString CFileUtils::readFileToString(const QString &filePath, const QString &fileName) { return readFileToString(appendFilePaths(filePath, fileName)); } + QString CFileUtils::readLockedFileToString(const QString &filePath, const QString &fileName) + { + return readLockedFileToString(appendFilePaths(filePath, fileName)); + } + bool CFileUtils::writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath) { if (fileNameAndPath.isEmpty()) { return false; } diff --git a/src/blackmisc/fileutils.h b/src/blackmisc/fileutils.h index 01ad13919..1c0c6d67d 100644 --- a/src/blackmisc/fileutils.h +++ b/src/blackmisc/fileutils.h @@ -41,12 +41,21 @@ namespace BlackMisc //! Write string to text file static bool writeStringToFile(const QString &content, const QString &fileNameAndPath); + //! Write string to file, with a lock so two applications can't access at the same time + static bool writeStringToLockedFile(const QString &content, const QString &fileNameAndPath); + //! Read file into string static QString readFileToString(const QString &fileNameAndPath); + //! Read file into string, with a lock so two applications can't access at the same time + static QString readLockedFileToString(const QString &fileNameAndPath); + //! Read file into string static QString readFileToString(const QString &filePath, const QString &fileName); + //! Read file into string, with a lock so two applications can't access at the same time + static QString readLockedFileToString(const QString &filePath, const QString &fileName); + //! Write string to text file in background static bool writeStringToFileInBackground(const QString &content, const QString &fileNameAndPath);