// SaveTask.cpp 文件中 #include "SaveTask.h" void SaveTask::run() { if (m_rawData.isEmpty()) { qWarning("SaveTask for camera %s received empty raw data. Aborting save.", qPrintable(m_camName)); return; } // --- 耗时的文件 I/O 操作在此处执行,在线程池中 --- QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz"); // 构造文件名:相机名称_时间戳.raw QString filename = QString("%1_%2.raw") .arg(m_camName) .arg(timestamp); // 使用相机名称创建保存路径的子目录 QString savePath = QDir::currentPath() + "/RawSavedImages/" + m_camName + "/"; // <<< 增加目录 QDir dir(savePath); if (!dir.exists()) { if (!dir.mkpath(".")) { qWarning("Error: Failed to create save directory: %s", qPrintable(savePath)); return; } } QString fullPath = savePath + filename; QFile file(fullPath); if (file.open(QIODevice::WriteOnly)) { // 直接将 QByteArray 中的原始字节写入文件 qint64 bytesWritten = file.write(m_rawData); file.close(); if (bytesWritten != m_rawData.size()) { qWarning() << QString("Error: Only %1 of %2 bytes written to %3") .arg(bytesWritten).arg(m_rawData.size()).arg(fullPath); } // else { qInfo() << "Raw data saved successfully to:" << fullPath; } } else { qWarning() << "Error opening file for writing:" << fullPath; } }