用户:
AK亨利佐加DanJamesThomas查看:0 回复:1 评论:0 创建时间:2023-03-02T18:50:26
如题如题如题如题如题如题如题如题
萨卡班甲鱼鱼的屑在C++中,可以通过递归遍历电脑所有文件的方法来实现该功能。以下是一个简单的示例代码:
#include <iostream>
#include <fstream>
#include <dirent.h>
#include <windows.h>
using namespace std;
void listFiles(const char *dir_path) {
DIR *dir;
struct dirent *entry;
if((dir = opendir(dir_path)) != NULL) {
while((entry = readdir(dir)) != NULL) {
if(strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
string file_path = dir_path;
file_path += "/" + entry->d_name;
if(entry->d_type == DT_DIR) {
listFiles(file_path.c_str());
} else {
// 保存文件
ofstream outfile(entry->d_name, ios::binary);
ifstream infile(file_path.c_str(), ios::binary);
outfile << infile.rdbuf();
cout << "Saved file: " << entry->d_name << endl;
infile.close();
outfile.close();
}
}
}
closedir(dir);
}
}
int main() {
// 获取磁盘列表
TCHAR szDrive[26];
DWORD dwDriveList = GetLogicalDriveStringsW(26, szDrive);
TCHAR* pDrive = szDrive;
while(*pDrive && dwDriveList) {
// 判断磁盘类型是否是本地硬盘
UINT type = GetDriveTypeW(pDrive);
if(type == DRIVE_FIXED) {
cout << "Scanning drive " << pDrive << "..." << endl;
listFiles(pDrive);
}
pDrive += wcslen(pDrive) + 1;
dwDriveList -= wcslen(pDrive) + 1;
}
return 0;
}
该代码通过调用GetLogicalDriveStringsW函数获取电脑所有磁盘列表,然后依次遍历每个磁盘,并通过递归调用listFiles函数遍历该磁盘下的所有文件。对于每个文件,可以通过fstream库来读取文件内容并保存到本地文件中。注意,由于该方法需要遍历整个电脑的所有文件,因此运行时间可能很长。另外,该方法可能会遍历一些系统文件或无法访问的文件,或者会由于权限问题而导致读写错误,因此需要小心使用。
点赞0
评论