我正在使用QT,但我找不到如何将文件从一个目录复制到另一个目录的方法。请问应该如何实现?
false
。可以这样写:if(!QFile::copy(...)) { ...处理错误... }
。在某些情况下,可以忽略错误,而在其他情况下,进程必须停止! - Alexis Wilke如果目标文件已存在,QFile::copy
将无法工作。解决方案是验证目标文件是否存在,然后删除它:
如果目标文件已存在,QFile::copy
将无法工作。解决方案是验证目标文件是否存在,然后删除它:
if (QFile::exists("/path/copy-of-file"))
{
QFile::remove("/path/copy-of-file");
}
QFile::copy("/path/file", "/path/copy-of-file");
void MainWindow::on_pushButton_2_clicked()
{
QString str5 = ui->lineEdit->text();
QString src = "."; QString setpath;
QDir dir(src);
if(!dir.exists()){
return;
}
dir.cdUp();
//dir.cdUp();
setpath = "E://";
dir.setPath(setpath);
QString dst_path = str5 + QDir::separator() ;
dir.mkpath(dst_path);
dir.cd(dst_path);
QString filename = "gnu.plt";
QString filename2 = "Load curve.plt";
QString filename3 = "tube temp.plt";
QFile file(filename);
QFile file1(filename2);
QFile file2(filename3);
file.copy(src+QDir::separator()+filename, setpath+QDir::separator()+str5+QDir::separator()+filename);
file1.copy(src+QDir::separator()+filename2, setpath+QDir::separator()+str5+QDir::separator()+filename2);
file2.copy(src+QDir::separator()+filename3, setpath+QDir::separator()+str5+QDir::separator()+filename3);
}
setpath
变量设置为"E://"
时,您可能需要使用QDir::separator()
。看起来你的意思也是要用"\\"
。此外,您的答案对于OP的问题而言过于专业化了。你应该简化一下。最后,在复制文件时不需要创建QFile
对象,因为有一个静态函数可以使用。但是如果您确实创建了这样的QFile
,那么您应该使用一个文件名进行复制:file.copy(destination);
。 - Alexis Wilke