88 lines
2.9 KiB
C#
88 lines
2.9 KiB
C#
#define _ENABLE_LOGGING
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Best.HTTP.Shared.PlatformSupport.FileSystem
|
|
{
|
|
public sealed class DefaultIOService : IIOService
|
|
{
|
|
public Stream CreateFileStream(string path, FileStreamModes mode)
|
|
{
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(CreateFileStream)}('{path}', {mode})");
|
|
#endif
|
|
|
|
switch (mode)
|
|
{
|
|
case FileStreamModes.Create:
|
|
return new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read);
|
|
case FileStreamModes.OpenRead:
|
|
return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read /*, 64 * 1024, FileOptions.SequentialScan*/);
|
|
case FileStreamModes.OpenReadWrite:
|
|
return new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
|
|
case FileStreamModes.Append:
|
|
return new FileStream(path, FileMode.Append);
|
|
}
|
|
|
|
throw new NotImplementedException($"{nameof(DefaultIOService)}.{nameof(CreateFileStream)} - '{mode}' not implemented!");
|
|
}
|
|
|
|
public void DirectoryCreate(string path)
|
|
{
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(DirectoryCreate)}('{path}')");
|
|
#endif
|
|
Directory.CreateDirectory(path);
|
|
}
|
|
|
|
public void DirectoryDelete(string path) => Directory.Delete(path, true);
|
|
|
|
public bool DirectoryExists(string path)
|
|
{
|
|
bool exists = Directory.Exists(path);
|
|
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(DirectoryExists)}('{path}', {exists})");
|
|
#endif
|
|
|
|
return exists;
|
|
}
|
|
|
|
public string[] GetFiles(string path)
|
|
{
|
|
var files = Directory.GetFiles(path);
|
|
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(GetFiles)}('{path}', {files?.Length})");
|
|
#endif
|
|
|
|
return files;
|
|
}
|
|
|
|
public void FileDelete(string path)
|
|
{
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(FileDelete)}('{path}')");
|
|
#endif
|
|
File.Delete(path);
|
|
}
|
|
|
|
public bool FileExists(string path)
|
|
{
|
|
bool exists = File.Exists(path);
|
|
|
|
#if ENABLE_LOGGING
|
|
if (HTTPManager.Logger.IsDiagnostic)
|
|
HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(FileExists)}('{path}', {exists})");
|
|
#endif
|
|
|
|
return exists;
|
|
}
|
|
}
|
|
}
|