This commit is contained in:
duckdoom4
2023-01-16 19:32:19 +01:00
parent 6e2b0f2771
commit b8412c2556
12 changed files with 890 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
using System.IO;
using System.Collections.Generic;
using System;
namespace pkNX.Containers.VFS;
public interface IFileSystem : IDisposable
{
IEnumerable<FileSystemPath> GetEntities(FileSystemPath path);
bool Exists(FileSystemPath path);
Stream CreateFile(FileSystemPath path);
Stream OpenFile(FileSystemPath path, FileAccess access);
void CreateDirectory(FileSystemPath path);
void Delete(FileSystemPath path);
bool IsReadOnly => false;
public string ReadAllText(FileSystemPath path)
{
if (!Exists(path))
return string.Empty;
using var stream = OpenFile(path, FileAccess.Read);
using var reader = new StreamReader(stream);
return reader.ReadToEnd();
}
public void WriteAllText(FileSystemPath path, string content)
{
if (!Exists(path))
{
CreateFile(path);
}
using var stream = OpenFile(path, FileAccess.Write);
using var writer = new StreamWriter(stream);
writer.Write(content);
}
}
public static class IFileSystemExtensions
{
public static ReadOnlyFileSystem AsReadOnlyFileSystem(this IFileSystem self) => new(self);
}