如何使用QT删除.pack和.idx文件

时间:2016-02-25 13:01:29

标签: git qt

我可以使用Windows 7操作系统上的以下代码删除除.pack和.idx文件之外的.git文件夹的全部内容:

QString strpath = QDir::homePath() + "/Repo/.git/";
    QDir dirForDeleteGit = strpath;
    QStringList strlistForGitDelete = dirForDeleteGit.entryList();

    for (int i=0; i<strlistForGitDelete.count(); i++)
     {
       QString strForGitFilePath = strpath + strlistForGitDelete.at(i);
       QFileInfo fileinfoForGit (strForGitFilePath);


      if(fileinfoForGit.isDir())
       {
         QStringList strlistForDeleteGit(strForGitFilePath);
         QDirIterator it(strForGitFilePath,QDir::Executable| QDir::Hidden| QDir::AllEntries|QDir::System |QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden | QDir::Files,QDirIterator::Subdirectories);

         if(it.hasNext())
         {
           while(it.hasNext())
           {
             strlistForDeleteGit << it.next();
           }

           int gitCount = strlistForDeleteGit.count()-1;
           qDebug()<<"File count :"<<gitCount;
           for(int j=gitCount; j>=0; j--)
           {
             QFileInfo fileinfor(strlistForDeleteGit.at(j));
              if(fileinfor.isDir())
               {
                  QDir dir(strlistForDeleteGit.at(j));
                   qDebug()<<"dir :"<<strlistForDeleteGit.at(j);
                  dir.rmdir(strlistForDeleteGit.at(j));
               }
              else
              {
                  QFile file(strlistForDeleteGit.at(j));
                   qDebug()<<"File :"<<strlistForDeleteGit.at(j);
                  file.remove(strlistForDeleteGit.at(j));
              }
                }
               }
         else
         {
             QDir dir(strForGitFilePath);
             dir.rmdir(strForGitFilePath.at(i));
         }
           }
      else
      {
          QFile file (strForGitFilePath);
          file.remove();
      }
   }

有任何建议/解决方案吗?我想删除.git文件夹的完整内容。我尝试过为QDirIterator使用不同的不同标志。

1 个答案:

答案 0 :(得分:0)

最后我通过文件的设置权限得到了解决方案。在删除.idx和.pack文件之前,我使用file.setPermissions(QFile::WriteOther);。这成功删除了Win7 OS上的文件。