优化这段代码QMutex mutex; QMutexLocker locker(&mutex); QString file_path = file_SePort_txt; QFile file(file_path); if(clearflag == QIODevice::Truncate){ if(file.open(QIODevice::WriteOnly|QIODevice::Append|QIODevice::Truncate)) { QDataStream out(&file); out.writeRawData(bytes,len); file.close(); return true; } }else{ if(file.open(QIODevice::WriteOnly|QIODevice::Append)) { QDataStream out(&file); out.writeRawData(bytes,len); file.close(); return true; } } return false;
时间: 2024-02-14 18:14:43 浏览: 99
qmutex_unix.rar_interface_linux QMutex
可以尝试对代码进行以下优化:
1. 使用 std::filesystem::path 代替 QString,提高代码可读性。
2. 减少重复代码,将文件操作的代码进行封装。
3. 考虑使用 RAII(Resource Acquisition Is Initialization)技术,避免手动管理锁的生命周期。
4. 使用 QFile::truncate 函数代替 QIODevice::Truncate 标志位,提高代码可读性。
优化后的代码如下:
```c++
#include <QFile>
#include <QDataStream>
#include <mutex>
#include <filesystem>
bool writeToFile(const std::filesystem::path& filePath, const char* bytes, int len, bool clearFlag)
{
static std::mutex mutex;
std::lock_guard<std::mutex> lock(mutex);
QFile file(QString::fromStdString(filePath.string()));
if (file.open(QIODevice::WriteOnly | QIODevice::Append | (clearFlag ? QFile::Truncate : 0)))
{
QDataStream out(&file);
out.writeRawData(bytes, len);
file.close();
return true;
}
return false;
}
```
这里使用 std::filesystem::path 代替 QString,提高了代码可读性。同时对文件操作进行了封装,减少了重复代码。使用 std::lock_guard 对锁进行了 RAII 封装,避免了手动管理锁的生命周期。使用 QFile::truncate 函数代替 QIODevice::Truncate 标志位,提高了代码可读性。
阅读全文