bool Thread::copyFile(QString sPath,QString tPath) { while(sPath == tPath) { tPath = changeFileName(tPath); } QFileInfo fileInfo(sPath); QFile cFile(tPath); if(cFile.exists()) { cFile.remove(); } if(fileInfo.isDir()) { if(!copyDirectoryFiles(sPath,tPath)) { return false; } } else { if(!copy(sPath,tPath)) { return false; } } return true; }
void MainWindow::startCopyDirectory(QString &path) { //qDebug() << "startCopyDirectory() :" + path; if(!autoSyn && !click) return; QDir dir(path); for(auto newPath : compareList) { // 不带文件夹名 //qDebug() << "newPath" + newPath; copyDirectoryFiles(path,newPath,true); lastSynTimeNotify(); } }
bool SelectFile::copyDirectoryFiles(QString fromDir ,QString toDir, bool coverFileIfExist) { QDir sourceDir(fromDir); QDir targetDir(toDir); QString toFile; if(!targetDir.exists()){ /**< 如果目标目录不存在,则进行创建 */ if(!targetDir.mkdir(targetDir.absolutePath())) return false; } QFileInfoList fileInfoList = sourceDir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList){ if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; if(fileInfo.isDir()){ /**< 当为目录时,递归的进行copy */ if(!copyDirectoryFiles(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName()), coverFileIfExist)) return false; } else{ /**< 当允许覆盖操作时,将旧文件进行删除操作 */ toFile = targetDir.filePath(fileInfo.fileName()); // QMessageBox::warning(0,"PATH1",toFile,QMessageBox::Yes); if(coverFileIfExist && targetDir.exists(fileInfo.fileName())){ targetDir.remove(fileInfo.fileName()); } toFile = toDir+"\\"+fileInfo.fileName(); qDebug() << toFile << " remove from m_pictures"; if(mw->m_pictures.contains(toFile)){ // QMessageBox::warning(0,"PATH2",toFile,QMessageBox::Yes); mw->m_pictures.removeAll(toFile); } /// 进行文件copy if(!QFile::copy(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName()))){ return false; } } } return true; }
bool MainWindow::copyDirectoryFiles(const QString &fromDir, const QString &toDir, bool coverFileIfExist) { if(isPathExcept(fromDir)) return true; // 流逝时间计算 static QElapsedTimer et; et.start(); QDir sourceDir(fromDir); QDir targetDir(toDir); if(!targetDir.exists()){ /** 如果目标目录不存在,则进行创建 */ if(!targetDir.mkdir(targetDir.path())) { qDebug() << "mkdir " + targetDir.filePath(sourceDir.dirName()) + " failed"; } } QFileInfoList fileInfoList = sourceDir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList) { if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; if(fileInfo.isDir()) { /**< 当为目录时,递归的进行 copy */ qDebug() << fileInfo.filePath() << "-> " << targetDir.filePath(fileInfo.fileName()); copyDirectoryFiles(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()),coverFileIfExist); } else { // 同步文件 synTwoFiles(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName())); } if(et.elapsed() > 300) { QApplication::processEvents(); et.restart(); qDebug() << "回到UI"; } } return true; }
bool Thread::copyDirectoryFiles(const QString &fromDir,const QString &toDir) { QDir sourceDir(fromDir); QDir targetDir(toDir); if(!targetDir.exists()) { /**< 如果目标目录不存在,则进行创建 */ if(!targetDir.mkdir(targetDir.absolutePath())) return false; } QFileInfoList fileInfoList = sourceDir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList) { if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; if(fileInfo.isDir()) { /**< 当为目录时,递归的进行copy */ if(!copyDirectoryFiles(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName()))) return false; } else { /**< 当允许覆盖操作时,将旧文件进行删除操作 */ if(targetDir.exists(fileInfo.fileName())) { targetDir.remove(fileInfo.fileName()); } /// 进行文件copy if(!copy(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()))) { return false; } } } return true; }
void SelectFile::copyFile(QString path) { QDir dir(path); QFileInfoList list; QDir flash_dir("C:/pic/SWWYL"); // 复制结果文件到程序用户选择的输出目录 switch (m_pt) { case HYFM: // if(m_first_change) { // m_first_change = false; // QMessageBox::warning(0,"PATH",path,QMessageBox::Yes); QThread::sleep(1); copyDirectoryFiles(path, m_outPath, true ); copyDirectoryFiles(path, "C:/pic/HYFM/", true ); // } break; case SWWYL: list = dir.entryInfoList(); qDebug() << list.size(); if (list.size() == 30+2){ QDir::setCurrent(root_path+"/yubao/wenyanliu/"); QThread::sleep(1); copyDirectoryFiles(path, m_outPath, true ); // call qie ge program. QProcess::execute("./QIEGE.exe"); // copy 0,1,2,3,4,5 pic to flash dir. QDir::setCurrent(root_path+"/yubao/wenyanliu/"); copyDirectoryFiles("./3d_qiege/", "C:/pic/SWWYL_3d/", true ); // copyDirectoryFiles("./flash/", "C:/pic/SWWYL_2d/", true ); QDir::setCurrent(root_path); } break; case ZCDW: list = dir.entryInfoList(); qDebug() << list.size(); if (list.size() == 101+2){ QDir::setCurrent(root_path+"/yubao/zcdw/"); QThread::sleep(1); copyDirectoryFiles(path, m_outPath, true ); copyDirectoryFiles(path, "C:/pic/ZCDW/", true ); QDir::setCurrent(root_path); } break; default: break; } }