我在堆栈上找到了示例代码,使用SHFILEOPERATION删除指定目录中的所有文件,效果很好。我唯一的问题是它删除了进程中的目标目录。如果在TSHFILEOpStruct中为pfrom指定的目录在其包含的所有文件被删除后仍然存在,我更愿意这样做。
我认为通过设置标志FOF_FILESONLY它只会删除文件,但也许我错过了一些东西。
我将TSHFILEOpStruct设置为以下内容:
FillChar(FileOp, SizeOf(fileOp), 0);
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(DirName+#0); //Target directory string needs to be Double Null Terminated
FileOp.fFlags := FOF_FILESONLY or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI;
SHFileOperation(FileOp);
是否有设置TSHFILEOpStruct来完成此任务?
我也在使用Delphi 2007,但我无法访问MSDN文档中提到的所有标志(例如FOF_NORECURSION)
为方便起见,如果需要,这里是指向上述文件的链接...... http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx
答案 0 :(得分:4)
你告诉它删除文件夹本身,所以它会。要仅删除文件夹内的文件,您需要使用文件名wildcark掩码,例如:
FileOp.pFrom := PChar(DirName+'\*.*'#0);