QT复制到QTemporaryFile

Eri*_*ric 6 c++ qt temporary-files

我想制作一份some/path/myfilein 的副本$TMPDIR/myprog-<random-string>.ext,这样我就可以将它传递给第三方程序,该程序会阻塞无扩展文件.

这是我想要的工作:

QString originalPath = "some/path/myfile";

QTemporaryFile f(
    QDir::temp().absoluteFilePath("mprog-XXXXXX.ext")
);

// f.open(); ?

QFile(originalPath).copy(f.fileName());
Run Code Online (Sandbox Code Playgroud)

但是,我现在有一个问题 - 文件尚未存在,因此尚未分配临时fileName()文件,或文件名已分配,但文件本身已存在,阻止新文件被复制到顶部.

如何在QT中将文件复制到临时位置,并在调用QTemporaryFile的析构函数时删除临时副本?

Rob*_*ieE 2

如果该文件不存在,请QTemporaryFile完全按照您所做的那样创建对象,打开它,然后立即关闭它。这将生成随机文件名并将其创建在磁盘上。

当您的QTemporaryFile对象被破坏时,该文件将从磁盘中删除。

  • 当它存在于磁盘上时,`.copy(`将拒绝复制并覆盖它 (2认同)