using FluidExplorer.Models; namespace FluidExplorer.Services.FileSystem; /// /// 快速目录枚举:内部使用 .NET 的 FileSystemEnumerable(NtQueryDirectoryFile 批量缓冲) /// 一次取回名称/属性/大小/时间,避免逐文件 Win32 调用。 /// public interface IFileSystemService { /// /// 异步枚举目录,分批回调(首批尽可能快,保证 UI 立刻有内容), /// 整体可取消;无权限/网络超时不抛异常,通过 listing.Error 汇报。 /// Task EnumerateAsync( string path, FolderListing listing, Func, Task> onBatch, int batchSize = 256, CancellationToken cancellationToken = default); /// 同步枚举(供后台索引/搜索回退用),返回全部条目。 IReadOnlyList Enumerate(string path, bool includeHidden = true); bool DirectoryExists(string path); bool FileExists(string path); /// 计算文件夹大小(后台、可取消)。 Task GetDirectorySizeAsync(string path, CancellationToken cancellationToken); }