olmayan bir boş klasörün kaldırılması.Qt boş olmayan bir klasörü nasıl kaldırılır Qt
31
A
cevap
39
yinelemeli ilk dizinin içeriğini silin. Here is a blog post with sample code for doing just that. İlgili kod snippet'ini ekledim.
bool removeDir(const QString & dirName)
{
bool result = true;
QDir dir(dirName);
if (dir.exists()) {
Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
if (info.isDir()) {
result = removeDir(info.absoluteFilePath());
}
else {
result = QFile::remove(info.absoluteFilePath());
}
if (!result) {
return result;
}
}
result = QDir().rmdir(dirName);
}
return result;
}
Düzenleme: Yukarıdaki cevabı Qt 4. Qt 5 kullanıyorsanız içindi, o zaman bu işlevselliği QDir::removeRecursively() yöntemle QDir yerleşiktir.
51
Qt 5 kullanıyorsanız, QDir::removeRecursively() yoktur.
göreli yollar için çalışmaz gibi görünüyor. removeDir ("docs") eğer ilkinde "docs/docs" varsa bunu kontrol edecektir. Aynı problem dir.rmdir satırında. Ben haklı mıyım – cybevnm
@cybevnm: Evet, haklısınız. Snippet'i, aşırı yüklü 'exists()' yöntemini parametreler olmadan kullanacak şekilde değiştirdim. http://doc.qt.io/qt-4.8/qdir.html#exists-2 –
"Sonuç = dir.rmdir (dizinadı)" satırı inanmak aynı kusuru vardır. Düzeltmek için QDir(). Rmdir (dirName) kullanıyorum. – cybevnm