gpt4 book ai didi

delphi - 删除包含非空子目录和文件的目录

转载 作者:行者123 更新时间:2023-12-03 15:19:08 31 4
gpt4 key购买 nike

如何删除一个包含一些文件和一些非空子目录的目录。
我已经尝试过SHFileOperation FunctionWindows 7 中存在一些兼容性问题.
然后我尝试了IFileOperation Interface 。但它在Windows XP中不兼容。然后我按照David Heffernan的建议尝试了以下代码:

procedure TMainForm.BitBtn01Click(Sender: TObject);
var
FileAndDirectoryExist: TSearchRec;
ResourceSavingPath : string;
begin
ResourceSavingPath := (GetWinDir) + 'Web\Wallpaper\';
if FindFirst(ResourceSavingPath + '\*', faAnyFile, FileAndDirectoryExist) = 0 then
try
repeat
if (FileAndDirectoryExist.Name <> '.') and (FileAndDirectoryExist.Name <> '..') then
if (FileAndDirectoryExist.Attr and faDirectory) <> 0 then
//it's a directory, empty it
ClearFolder(ResourceSavingPath +'\' + FileAndDirectoryExist.Name, mask, recursive)
else
//it's a file, delete it
DeleteFile(ResourceSavingPath + '\' + FileAndDirectoryExist.Name);
until FindNext(FileAndDirectoryExist) <> 0;
//now that this directory is empty, we can delete it
RemoveDir(ResourceSavingPath);
finally
FindClose(FileAndDirectoryExist);
end;
end;

但它不会被编译,并在ClearFolder掩码递归处将错误提及为未声明标识符。我的要求是“如果 WALLPAPER 文件夹下存在任何子文件夹,它将被删除”。同一子文件夹可以包含任意数量的非空子文件夹或文件。

最佳答案

首先,SHFileOperation 在 Windows 7 或 Windows 8 上没有兼容性问题。是的,现在建议您改用 IFileOperation。但如果您想支持 XP 等较旧的操作系统,那么您可以而且应该只调用 SHFileOperation。它有效并将继续有效。在 Windows 7 和 Windows 8 上使用它非常好,如果它从 Windows 中删除,我会吃掉我的帽子。 Microsoft 不遗余力地保持向后兼容性。因此,在我看来,SHFileOperation 是您的最佳选择。

基于 FindFirst 的方法失败,因为您需要将其放入单独的函数中才能允许递归。我在其他答案中发布的代码不完整。这是完整版本:

procedure DeleteDirectory(const Name: string);
var
F: TSearchRec;
begin
if FindFirst(Name + '\*', faAnyFile, F) = 0 then begin
try
repeat
if (F.Attr and faDirectory <> 0) then begin
if (F.Name <> '.') and (F.Name <> '..') then begin
DeleteDirectory(Name + '\' + F.Name);
end;
end else begin
DeleteFile(Name + '\' + F.Name);
end;
until FindNext(F) <> 0;
finally
FindClose(F);
end;
RemoveDir(Name);
end;
end;

这将删除目录及其内容。您需要遍历顶级目录,然后为找到的每个子目录调用此函数。

关于delphi - 删除包含非空子目录和文件的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336761/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com