我想要用 wxWidgets 寫一個程式,能夠掃瞄整個目錄結構,然後把不需要的檔案刪掉。掃瞄這件事情可以用遞迴來做:
void MainFrame::RecursiveClean(const wxString& dirname) {
wxDir dir(dirname);
if (!dir.IsOpened()) {
return;
}
wxString name;
wxFileName fn(dirname, "");
bool found = dir.GetFirst(&name);
while (found) {
wxString fullpath = fn.GetPathWithSep() + name;
if (wxDirExists(fullpath)) {
if (delete_folder_patterns_.Match(name)) {
} else {
RecursiveClean(fullpath);
}
} else if (wxFileExists(fullpath)) {
if (delete_file_patterns_.Match(name)) {
}
}
found = dir.GetNext(&name);
}
}
Code language: C++ (cpp)
但掃瞄的過程很花時間。如果我們就直接這樣硬幹,在掃瞄的過程中,wxWidgets 就沒有辦法處理事件,導致整個 UI 就會停在那邊沒有反應。所以我們要想個方法去解決。
Read More