la operación de copia de archivos no funciona en un hilo separado?
Pregunta
Estoy tratando de ejecutar código de copiar archivos en otro hilo de modo que no se puede congelar la interfaz gráfica de usuario de la aplicación.
He encontrado que no parecen funcionar en un hilo separado.
¿Por qué no funciona?
void CopyOperation::run()
{
CopyFilesToFolder(list,sFolder);
}
bool CopyOperation::CopyFilesToFolder(const QStringList &oFileList,const QString
&sTargetFolder)
{
if(sTargetFolder.isEmpty())
{
status = false;
return false;
}
QDir dir(sTargetFolder);
if(!dir.exists()) dir.mkdir(sTargetFolder);
QString sOldDirPath = dir.currentPath();
//if(!dir.setCurrent(sTargetFolder)) return false;
QFile file;
status = true;
foreach(QString sFileName,oFileList)
{
file.setFileName(sFileName);
QFileInfo info(sFileName);
QString newfile = sTargetFolder + "/" + info.fileName();
qDebug() << "\n name = " << newfile;
if(!QFile::copy(sFileName,newfile))
//if(!file.copy(newfile))
{
qDebug() << "\n File copy failed .. " + file.fileName() + " Error : " + file.errorString();
status = false;
break;
}
}
qDebug() << "\n Result .. " << file.errorString() << "code " << file.error();
//dir.setCurrent(sOldDirPath);
return status;
}
Solución
Desde que hiciste no de código postal, sólo puedo tratar de adivinar cuál es el problema. Qt tiene una función estática:
bool copy ( const QString & fileName, const QString & newName )
También hay una copia que no es estática:
bool copy ( const QString & newName )
Los dos fallará si el archivo definido por newName
ya existe, es decir. archivo existente no se sobrescribirá. Además, tal vez no existe camino. Sin una cierta porción de código es difícil de adivinar cuál es el problema.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow