我可以使用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使用不同的不同标志。
答案 0 :(得分:0)
最后我通过文件的设置权限得到了解决方案。在删除.idx和.pack文件之前,我使用file.setPermissions(QFile::WriteOther);
。这成功删除了Win7 OS上的文件。