Qt 复制 重名替换
时间: 2023-10-24 08:04:49 浏览: 44
在 Qt 中,可以使用QFile类来复制和重命名文件,使用QMessageBox类来显示警告或确认消息框。以下是一个示例代码,演示如何复制和重命名文件,并在需要时替换现有文件:
```c++
#include <QFile>
#include <QMessageBox>
// 复制文件
bool copyFile(const QString& sourceFile, const QString& destinationFile)
{
QFile source(sourceFile);
QFile destination(destinationFile);
// 如果目标文件已经存在,提示用户是否要替换
if (destination.exists())
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(nullptr, "File already exists", "Do you want to replace?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::No)
return false;
else
destination.remove(); // 删除现有的文件
}
// 打开源文件和目标文件
if (source.open(QIODevice::ReadOnly) && destination.open(QIODevice::WriteOnly))
{
// 复制文件内容
destination.write(source.readAll());
// 关闭文件
source.close();
destination.close();
return true;
}
else
{
// 显示错误消息
QMessageBox::critical(nullptr, "Error", "Unable to copy file.");
return false;
}
}
// 重命名文件
bool renameFile(const QString& sourceFile, const QString& destinationFile)
{
// 如果目标文件已经存在,提示用户是否要替换
if (QFile::exists(destinationFile))
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(nullptr, "File already exists", "Do you want to replace?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::No)
return false;
else
QFile::remove(destinationFile); // 删除现有的文件
}
// 重命名文件
if (QFile::rename(sourceFile, destinationFile))
return true;
else
{
// 显示错误消息
QMessageBox::critical(nullptr, "Error", "Unable to rename file.");
return false;
}
}
```
使用时,可以像这样调用复制文件和重命名文件的函数:
```c++
QString sourceFile = "path/to/source/file";
QString destinationFile = "path/to/destination/file";
// 复制文件
if (copyFile(sourceFile, destinationFile))
qDebug() << "File copied successfully.";
// 重命名文件
if (renameFile(sourceFile, destinationFile))
qDebug() << "File renamed successfully.";
```