用于以编程方式删除文件和文件夹的Win32 API有哪些?
编辑
DeleteFile和RemoveDirectory就是我要找的。然而,对于这个项目,我最终使用了SHFileOperation。我发现CodeGuru上的sample code很有帮助。
发布于 2008-10-17 18:57:22
我觉得你想要DeleteFile和RemoveDirectory
发布于 2008-10-20 14:29:49
有两种方法可以解决这个问题。一种是通过File Services (使用DeleteFile和RemoveDirectory等命令),另一种是通过Windows Shell (使用SHFileOperation。如果你想删除非空目录或者如果你想要资源管理器风格的反馈(例如,带有浮动文件的进度对话框),推荐使用后者。最快的方法是创建一个SHFILEOPSTRUCT,初始化它并调用SHFileOperation,如下所示:
void silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being deleted, without trailing backslash
{
SHFILEOPSTRUCT file_op = {
NULL,
FO_DELETE,
dir,
"",
FOF_NOCONFIRMATION |
FOF_NOERRORUI |
FOF_SILENT,
false,
0,
"" };
SHFileOperation(&file_op);
}
这会默默地删除整个目录。您可以通过改变SHFILEOPSTRUCT初始化来添加反馈和提示-请仔细阅读它。
发布于 2011-09-27 06:46:37
参见上面uvgroovy的评论。'dir‘字段的末尾需要2个空值。
int silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being deleted, without trailing backslash
{
int len = strlen(dir) + 2; // required to set 2 nulls at end of argument to SHFileOperation.
char* tempdir = (char*) malloc(len);
memset(tempdir,0,len);
strcpy(tempdir,dir);
SHFILEOPSTRUCT file_op = {
NULL,
FO_DELETE,
tempdir,
NULL,
FOF_NOCONFIRMATION |
FOF_NOERRORUI |
FOF_SILENT,
false,
0,
"" };
int ret = SHFileOperation(&file_op);
free(tempdir);
return ret; // returns 0 on success, non zero on failure.
}
https://stackoverflow.com/questions/213392
复制相似问题