DefaultIOService.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #define _ENABLE_LOGGING
  2. using System;
  3. using System.IO;
  4. namespace Best.HTTP.Shared.PlatformSupport.FileSystem
  5. {
  6. public sealed class DefaultIOService : IIOService
  7. {
  8. public Stream CreateFileStream(string path, FileStreamModes mode)
  9. {
  10. #if ENABLE_LOGGING
  11. if (HTTPManager.Logger.IsDiagnostic)
  12. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(CreateFileStream)}('{path}', {mode})");
  13. #endif
  14. switch (mode)
  15. {
  16. case FileStreamModes.Create:
  17. return new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read);
  18. case FileStreamModes.OpenRead:
  19. return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read /*, 64 * 1024, FileOptions.SequentialScan*/);
  20. case FileStreamModes.OpenReadWrite:
  21. return new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
  22. case FileStreamModes.Append:
  23. return new FileStream(path, FileMode.Append);
  24. }
  25. throw new NotImplementedException($"{nameof(DefaultIOService)}.{nameof(CreateFileStream)} - '{mode}' not implemented!");
  26. }
  27. public void DirectoryCreate(string path)
  28. {
  29. #if ENABLE_LOGGING
  30. if (HTTPManager.Logger.IsDiagnostic)
  31. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(DirectoryCreate)}('{path}')");
  32. #endif
  33. Directory.CreateDirectory(path);
  34. }
  35. public void DirectoryDelete(string path) => Directory.Delete(path, true);
  36. public bool DirectoryExists(string path)
  37. {
  38. bool exists = Directory.Exists(path);
  39. #if ENABLE_LOGGING
  40. if (HTTPManager.Logger.IsDiagnostic)
  41. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(DirectoryExists)}('{path}', {exists})");
  42. #endif
  43. return exists;
  44. }
  45. public string[] GetFiles(string path)
  46. {
  47. var files = Directory.GetFiles(path);
  48. #if ENABLE_LOGGING
  49. if (HTTPManager.Logger.IsDiagnostic)
  50. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(GetFiles)}('{path}', {files?.Length})");
  51. #endif
  52. return files;
  53. }
  54. public void FileDelete(string path)
  55. {
  56. #if ENABLE_LOGGING
  57. if (HTTPManager.Logger.IsDiagnostic)
  58. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(FileDelete)}('{path}')");
  59. #endif
  60. File.Delete(path);
  61. }
  62. public bool FileExists(string path)
  63. {
  64. bool exists = File.Exists(path);
  65. #if ENABLE_LOGGING
  66. if (HTTPManager.Logger.IsDiagnostic)
  67. HTTPManager.Logger.Verbose(nameof(DefaultIOService), $"{nameof(FileExists)}('{path}', {exists})");
  68. #endif
  69. return exists;
  70. }
  71. }
  72. }