我正在尝试删除用户临时目录%localappdata%/ Temp中的文件夹,以清理一些剩余的空文件夹但是我不知道该怎么做,还需要考虑unicode路径。< / p>
我在用,
double delete_tempfolder(const char* directory_name) {
rmdir(directory_name);
return 1;
}
int main(){
delete_tempfolder("C:\\Users\\USER\\AppData\\Local\\Temp\\TMPDIR");
cin.get();
return 0;
}
但是一旦目录使用了非ASCII字符,rmdir就会停止工作,我需要能够使用unicode字符,因为该路径中的用户名文件夹通常都有。
答案 0 :(得分:-2)
在MultiByteToWideChar()上多读一点,这对我有用,它能够删除非ASCII名称的目录。
double fn_directory_remove(const char* lpath) {
int wchars_num = MultiByteToWideChar(CP_UTF8 , 0 , lpath, -1, NULL, 0);
WCHAR* wstr = new WCHAR[wchars_num];
MultiByteToWideChar(CP_UTF8, 0, lpath, -1, wstr, wchars_num);
// print directory to delete
std::wcout << wstr;
if (RemoveDirectoryW(wstr)) {
delete[] wstr;
return 1;
} else {
delete[] wstr;
return 0;
}
}
// note: should use GetTempPathW() to get actual user Temp directory
double _out = fn_directory_remove("C:\\Users\\USER\\AppData\\Local\\Temp\\TEMPDIR");
cout << "Deleted directory (%localappdata%\\Temp\\TEMPDIR\\): " << _out << endl;