Qt中複製資料夾
阿新 • • 發佈:2018-11-24
/** qCopyDirectory -- 拷貝目錄 fromDir : 源目錄 傳進來的是絕對路徑,absolutePath toDir : 目標目錄 bCoverIfFileExists : ture:同名時覆蓋 false:同名時返回false,終止拷貝 返回: ture拷貝成功 false:拷貝未完成 例如: QDir fromDir("D:\Wiz"); QDir toDir("D:\qwe4"); */ bool MainWindow::qCopyDirectory(const QDir& fromDir, const QDir& toDir, bool bCoverIfFileExists) { QDir formDir_ = fromDir; QDir toDir_ = toDir; if(!toDir_.exists()) { if(!toDir_.mkdir(toDir.absolutePath())) return false; } QFileInfoList fileInfoList = formDir_.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList) { if(fileInfo.fileName() == "."|| fileInfo.fileName() == "..") continue; //拷貝子目錄 if(fileInfo.isDir()) { //遞迴呼叫拷貝 if(!qCopyDirectory(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName()),true)) return false; } //拷貝子檔案 else { if(bCoverIfFileExists && toDir_.exists(fileInfo.fileName())) { toDir_.remove(fileInfo.fileName()); } if(!QFile::copy(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName()))) { return false; } } } return true; }