From 46f9f282a1a60a5c8cea8d09bf4559b40f083a0f Mon Sep 17 00:00:00 2001 From: ZhangTingan Date: Thu, 23 Jul 2026 09:47:54 +0800 Subject: [PATCH] fix: isSupportSeek use QTemporaryFile directly instead of close/reopen Fix permission denied error when reopening temporary file for seek detection on certain filesystems. Log: isSupportSeek use QTemporaryFile directly Bug:https://pms.uniontech.com/bug-view-371275.html --- 3rdparty/interface/common.cpp | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/3rdparty/interface/common.cpp b/3rdparty/interface/common.cpp index ca5c9a21..4ce5b274 100644 --- a/3rdparty/interface/common.cpp +++ b/3rdparty/interface/common.cpp @@ -439,27 +439,19 @@ bool Common::isSupportSeek(QString sFileName) } file.close(); } else { - // 指定临时文件的目录 - QString tempDir = info.absoluteDir().path(); // 替换为你的目录路径 - QString fileTemplate = tempDir + "/tempfile_XXXXXX"; // 文件名模板 - // 创建 QTemporaryFile + QString tempDir = info.absoluteDir().path(); + QString fileTemplate = tempDir + "/tempfile_XXXXXX"; QTemporaryFile tempFile(fileTemplate); tempFile.setAutoRemove(true); - // 尝试打开临时文件 if (tempFile.open()) { tempFile.write("test\n"); tempFile.flush(); - } - tempFile.close(); - QString sFileName = tempFile.fileName(); - QFile file(sFileName); - if(file.open(QIODevice::ReadOnly)) { - if (file.seek(0)) { - file.close(); - return true; // 支持 seek + if (tempFile.seek(0)) { + tempFile.close(); + return true; } } - file.close(); + tempFile.close(); } return false; }