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);
}