|
|
@@ -6,7 +6,7 @@ public interface ILuaFileSystem
|
|
|
{
|
|
|
public bool IsReadable(string path);
|
|
|
public ValueTask<LuaFileContent> ReadFileContentAsync(string path, CancellationToken cancellationToken);
|
|
|
- public IStream Open(string path, FileMode mode, FileAccess access);
|
|
|
+ public IStream Open(string path, LuaFileMode mode);
|
|
|
public void Rename(string oldName, string newName);
|
|
|
public void Remove(string path);
|
|
|
}
|
|
|
@@ -48,6 +48,20 @@ public sealed class FileSystem : ILuaFileSystem
|
|
|
{
|
|
|
public static readonly FileSystem Instance = new();
|
|
|
|
|
|
+ public static (FileMode, FileAccess access) GetFileMode(LuaFileMode luaFileMode)
|
|
|
+ {
|
|
|
+ return luaFileMode switch
|
|
|
+ {
|
|
|
+ LuaFileMode.Read => (FileMode.Open, FileAccess.Read),
|
|
|
+ LuaFileMode.Write => (FileMode.Create, FileAccess.Write),
|
|
|
+ LuaFileMode.Append => (FileMode.Append, FileAccess.Write),
|
|
|
+ LuaFileMode.ReadWriteOpen => (FileMode.Open, FileAccess.ReadWrite),
|
|
|
+ LuaFileMode.ReadWriteCreate => (FileMode.Create, FileAccess.ReadWrite),
|
|
|
+ LuaFileMode.ReadAppend => (FileMode.Append, FileAccess.ReadWrite),
|
|
|
+ _ => throw new ArgumentOutOfRangeException(nameof(luaFileMode), luaFileMode, null)
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
public bool IsReadable(string path)
|
|
|
{
|
|
|
if (!File.Exists(path)) return false;
|
|
|
@@ -68,8 +82,9 @@ public sealed class FileSystem : ILuaFileSystem
|
|
|
return new(new LuaFileContent(bytes));
|
|
|
}
|
|
|
|
|
|
- public IStream Open(string path, FileMode mode, FileAccess access)
|
|
|
+ public IStream Open(string path, LuaFileMode luaMode)
|
|
|
{
|
|
|
+ var (mode, access) = GetFileMode(luaMode);
|
|
|
return new StreamWrapper(File.Open(path, mode, access));
|
|
|
}
|
|
|
|