tesses-vfs-extras/Tesses.YouTubeDownloader.VFS/Class1.cs

101 lines
2.9 KiB
C#
Raw Normal View History

2023-09-10 20:01:54 +00:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tesses.VirtualFilesystem;
namespace Tesses.YouTubeDownloader.VFS
{
public class TYTDVFS : TYTDStorage
{
IVirtualFilesystem fs;
public TYTDVFS(IVirtualFilesystem fs)
{
this.fs =fs;
}
public override async Task<Stream> CreateAsync(string path)
{
return await fs.OpenAsync(path,FileMode.Create,FileAccess.Write,FileShare.Inheritable);
}
public override void CreateDirectory(string path)
{
fs.CreateDirectory(path);
}
public override void DeleteDirectory(string dir, bool recursive = false)
{
fs.DeleteDirectory(dir, recursive);
}
public override void DeleteFile(string file)
{
fs.DeleteFile(file);
}
public override async Task<bool> DirectoryExistsAsync(string path)
{
return await fs.DirectoryExistsAsync(path);
}
public override async IAsyncEnumerable<string> EnumerateDirectoriesAsync(string path)
{
await foreach(var dir in fs.EnumerateDirectoriesAsync(path))
{
yield return dir.Name;
}
}
public override IAsyncEnumerable<string> EnumerateFilesAsync(string path)
{
await foreach(var file in fs.EnumerateFilesAsync(path))
{
yield return file.Name;
}
}
public override async Task<bool> FileExistsAsync(string path)
{
return await fs.FileExistsAsync(path);
}
public override void MoveDirectory(string src, string dest)
{
fs.MoveDirectory(src,dest);
}
public override async Task<Stream> OpenOrCreateAsync(string path)
{
return await fs.OpenAsync(path,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.Inheritable);
}
public override async Task<Stream> OpenReadAsync(string path)
{
return await fs.OpenAsync(path,FileMode.Open,FileAccess.Read,FileShare.Read);
}
public override void RenameFile(string src, string dest)
{
fs.MoveFile(src,dest);
}
public override IEnumerable<string> EnumerateDirectories(string path)
{
foreach(var item in fs.EnumerateDirectories(path)) yield return item.Name;
}
public override IEnumerable<string> EnumerateFiles(string path)
{
foreach(var item in fs.EnumerateFiles(path)) yield return item.Name;
}
public override bool DirectoryExists(string path)
{
return fs.DirectoryExists(path);
}
public new bool FileExists(string path)
{
return fs.FileExists(path);
}
}
}