C++ 删除隐藏文件夹及隐藏文件夹内的所有文件,不使用filesystem库
时间: 2024-03-21 18:43:07 浏览: 276
如果不使用C++17的filesystem库,也可以使用Windows API中的FindFirstFile和FindNextFile函数来实现。
以下是一个例子:
```c++
#include <iostream>
#include <windows.h>
#include <string>
// 删除文件夹及其中所有文件(包括隐藏文件夹和隐藏文件)
void remove_folder(const std::string& folder_path) {
WIN32_FIND_DATAA file_data;
HANDLE h_find;
std::string search_path = folder_path + "\\*.*";
h_find = FindFirstFileA(search_path.c_str(), &file_data);
if (h_find == INVALID_HANDLE_VALUE) {
return;
}
do {
// 如果是文件夹,则递归删除子文件夹
if (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (std::string(file_data.cFileName) != "." && std::string(file_data.cFileName) != "..") {
std::string sub_folder_path = folder_path + "\\" + std::string(file_data.cFileName);
remove_folder(sub_folder_path);
}
}
// 如果是文件,则直接删除
else {
std::string file_path = folder_path + "\\" + std::string(file_data.cFileName);
SetFileAttributesA(file_path.c_str(), FILE_ATTRIBUTE_NORMAL);
DeleteFileA(file_path.c_str());
}
} while (FindNextFileA(h_find, &file_data));
FindClose(h_find);
// 删除文件夹本身
SetFileAttributesA(folder_path.c_str(), FILE_ATTRIBUTE_NORMAL);
RemoveDirectoryA(folder_path.c_str());
}
int main() {
std::string folder_path = "path/to/hidden/folder";
remove_folder(folder_path);
return 0;
}
```
这段代码使用了Windows API中的FindFirstFile和FindNextFile函数来遍历文件夹,如果是文件夹则递归调用函数继续删除,如果是文件则直接删除。最后删除文件夹本身。注意在删除文件或文件夹之前要先将其属性设置为普通属性。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)