qt复制文件到指定路径
时间: 2023-11-27 12:02:52 浏览: 96
在 Qt 中,可以使用 QFile 类和QDir 类来复制文件到指定路径。以下是一个简单的示例代码:
```cpp
#include <QFile>
#include <QDir>
// 复制文件
bool copyFile(const QString& sourceFile, const QString& destinationFile)
{
// 如果目标文件已经存在,则删除它
if (QFile::exists(destinationFile))
{
QFile::remove(destinationFile);
}
// 打开源文件和目标文件
QFile source(sourceFile);
QFile destination(destinationFile);
// 如果打开源文件或目标文件失败,则返回 false
if (!source.open(QIODevice::ReadOnly) || !destination.open(QIODevice::WriteOnly))
{
return false;
}
// 将源文件的内容复制到目标文件
destination.write(source.readAll());
// 关闭文件
source.close();
destination.close();
return true;
}
// 复制文件夹
bool copyDirectory(const QString& sourceDir, const QString& destinationDir)
{
// 创建目标文件夹
QDir destination(destinationDir);
if (!destination.exists())
{
destination.mkpath(".");
}
// 遍历源文件夹中的所有文件和子文件夹
QDir source(sourceDir);
QStringList files = source.entryList(QDir::Files);
QStringList dirs = source.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
// 复制源文件夹中的所有文件
for (QString file : files)
{
QString sourceFile = source.filePath(file);
QString destinationFile = destination.filePath(file);
if (!copyFile(sourceFile, destinationFile))
{
return false;
}
}
// 递归复制源文件夹中的所有子文件夹
for (QString dir : dirs)
{
QString sourceDirPath = source.filePath(dir);
QString destinationDirPath = destination.filePath(dir);
if (!copyDirectory(sourceDirPath, destinationDirPath))
{
return false;
}
}
return true;
}
```
使用示例:
```cpp
QString sourceFilePath = "source/file.txt";
QString destinationFilePath = "destination/file.txt";
copyFile(sourceFilePath, destinationFilePath);
QString sourceDirPath = "source";
QString destinationDirPath = "destination";
copyDirectory(sourceDirPath, destinationDirPath);
```
在实际使用时,可以根据需要进行适当的修改,例如添加错误处理、进度显示等功能。