using System; using System.IO; namespace NHSE.Core; /// /// Provides file access from a filesystem folder. /// /// /// Creates a provider rooted at the specified folder path. /// /// Absolute path to the save folder. public sealed class FolderSaveFileProvider(string rootPath) : ISaveFileProvider { public byte[] ReadFile(string relativePath) { var fullPath = Path.Combine(rootPath, relativePath); return File.ReadAllBytes(fullPath); } public void WriteFile(string relativePath, ReadOnlySpan data) { var fullPath = Path.Combine(rootPath, relativePath); File.WriteAllBytes(fullPath, data); } public bool FileExists(string relativePath) { var fullPath = Path.Combine(rootPath, relativePath); return File.Exists(fullPath); } public string[] GetDirectories(string searchPattern) { var dirs = Directory.GetDirectories(rootPath, searchPattern, SearchOption.TopDirectoryOnly); var result = new string[dirs.Length]; for (int i = 0; i < dirs.Length; i++) result[i] = new DirectoryInfo(dirs[i]).Name; return result; } public ISaveFileProvider GetSubdirectoryProvider(string subdirectory) { var subPath = Path.Combine(rootPath, subdirectory); return new FolderSaveFileProvider(subPath); } public void Flush() { // No-op for folder provider; writes are immediate. } }