如何简单实现复制文件夹内容且不包含其子文件夹的功能?
实现方案
你可以基于Delphi自带的System.IOUtils单元封装轻量函数实现需求,无需引入第三方依赖:
可直接调用的函数代码
uses System.SysUtils, System.IOUtils; procedure CopyFilesOnly(const SourceDir, TargetDir: string; OverwriteExisting: Boolean = True); var SrcFile: string; TargetFilePath: string; begin // 目标目录不存在时自动创建 if not TDirectory.Exists(TargetDir) then TDirectory.CreateDirectory(TargetDir); // 仅枚举源目录根层级的所有文件,不遍历子目录 for SrcFile in TDirectory.GetFiles(SourceDir, '*.*', TSearchOption.soTopDirectoryOnly) do begin TargetFilePath := TPath.Combine(TargetDir, TPath.GetFileName(SrcFile)); TFile.Copy(SrcFile, TargetFilePath, OverwriteExisting); end; end;
调用示例
直接替换你原来的TDirectory.Copy调用即可:
// 仅复制C:\folder下的所有文件到C:\folder2,忽略所有子文件夹 CopyFilesOnly('C:\folder', 'C:\folder2');
补充说明
核心逻辑通过TSearchOption.soTopDirectoryOnly参数限制仅扫描源目录第一层文件,不会递归读取子目录内容。如果需要处理异常场景(如文件被占用、无读写权限),可在TFile.Copy外层加try...except块自行适配业务逻辑。
内容的提问来源于stack exchange,提问作者Codrut
相关产品推荐
相关产品推荐

