/*! \brief 先清理temp_project中的文件,然后将保存的文件保存在temp_project目录中,然后再将目标目录清理干净,最后将temp_project目录中的文件copy到目标目录中 \fn CMainWindow::on_actionSave_triggered */ void CMainWindow::on_actionSave_triggered() { emit signal_ClearDebug(); emit signal_ShowMessageDebug(0,QString("开始保存... %1").arg(QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss.zzz"))); ///< 清理掉temp_project目录中的文件 QDir tempDir("temp_project"); if (tempDir.exists()) { qDebug()<<__func__<<__LINE__<<"有"; DeletePathFile(QDir::currentPath()+"/temp_project"); }else { qDebug()<<__func__<<__LINE__<<"无"; tempDir.mkdir(QDir::currentPath()+"/temp_project"); } // qDebug()<<__func__<<__LINE__<<__FILE__<<m_pTreeWidget->topLevelItemCount(); ///< 生成配置文件,生成在temp目录中 for (int nTreeItemCount = 0; nTreeItemCount < m_pTreeWidget->topLevelItemCount(); ++nTreeItemCount) { if (m_pTreeWidget->topLevelItem(nTreeItemCount)->type() == CGI_SCADA_DLL_I::TreeItemType_Undefined) { continue; }else { ((CGI_SCADA_DLL_I*)m_pTreeWidget->topLevelItem(nTreeItemCount))->SaveAction(); } } DeletePathFile(m_strProjectPath);///< 清理掉目标目录中的文件 /// 将temp_project目录中的文件复制到目标目录 if (!tempDir.exists()) return ; tempDir.setFilter(QDir::Dirs|QDir::Files); tempDir.setSorting(QDir::DirsFirst); QFileInfoList list = tempDir.entryInfoList(); int i=0; do{ QFileInfo fileInfo = list.at(i); if((fileInfo.fileName()==".")|(fileInfo.fileName()=="..")) { i++; continue; } bool bisDir=fileInfo.isDir(); if(bisDir) { qDebug()<<(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<fileInfo.absoluteFilePath(); }else{ qDebug()<<(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<fileInfo.absoluteFilePath()<<fileInfo.baseName(); QFile::copy(fileInfo.absoluteFilePath(),QString("%1/%2").arg(m_strProjectPath).arg(fileInfo.fileName())); } i++; }while(i<list.size()); emit signal_ShowMessageDebug(0,QString("保存完毕")); }
void CMainWindow::DeletePathFile(QString strFilePath) { QString strPath = strFilePath; qDebug()<<strPath; QDir dir(strPath); if (!dir.exists()) return ; dir.setFilter(QDir::Dirs|QDir::Files); dir.setSorting(QDir::DirsFirst); QFileInfoList list = dir.entryInfoList(); int i=0; QString fileName; do{ QFileInfo fileInfo = list.at(i); if((fileInfo.fileName()==".")|(fileInfo.fileName()=="..")) { i++; continue; } bool bisDir=fileInfo.isDir(); if(bisDir) { qDebug()<<(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<fileInfo.absoluteFilePath(); DeletePathFile(fileInfo.filePath()); dir.rmdir(fileInfo.filePath()); }else{ fileName = fileInfo.fileName(); dir.remove(fileInfo.fileName()); qDebug()<<(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<fileInfo.absoluteFilePath(); } i++; }while(i<list.size()); }
/*! \brief 解压缩槽函数 \fn CMainWindow::on_actionExtract_triggered */ void CMainWindow::on_actionExtract_triggered() { DeletePathFile("project"); QDir dir = QDir::current(); dir.remove("project.tar"); system("7z.exe x project.tar.gz -y"); system("7z.exe x project.tar -y"); }
VOID CEdRptExport::OnEndExporting() { DeletePathFile(m_szPath + "*.*"); RemoveDirectory(m_szPath); m_ZipArc.CloseZip(); // modify file head FILE *fp = fopen(m_szExpName, "r+"); if (fp != NULL) { fputc('b', fp); fputc('s', fp); } fclose(fp); }