0

アプリケーションの GUI がフリーズしないように、他のスレッドでファイルをコピーするコードを実行しようとしています。

別のスレッドでは機能していないようです。

なぜ機能しないのですか?

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;
}
4

1 に答える 1

1

コードを投稿していないので、何が問題なのか推測できます。Qtには静的関数があります:

bool copy ( const QString & fileName, const QString & newName )

静的ではないコピーもあります。

bool    copy ( const QString & newName )

newNameによって定義されたファイルが既に存在する場合、どちらも失敗します。既存のファイルは上書きされません。また、パスが存在しない可能性があります。コードの一部がないと、何が問題なのかを推測するのが難しくなります。

于 2011-01-02T18:57:41.693 に答える