BdInfoDirectoryInfo.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using BDInfo.IO;
  5. using MediaBrowser.Model.IO;
  6. namespace MediaBrowser.MediaEncoding.BdInfo
  7. {
  8. class BdInfoDirectoryInfo : BDInfo.IO.IDirectoryInfo
  9. {
  10. IFileSystem _fileSystem = null;
  11. FileSystemMetadata _impl = null;
  12. public string Name => _impl.Name;
  13. public string FullName => _impl.FullName;
  14. public IDirectoryInfo Parent
  15. {
  16. get
  17. {
  18. var parentFolder = System.IO.Path.GetDirectoryName(_impl.FullName);
  19. if (parentFolder != null)
  20. {
  21. return new BdInfoDirectoryInfo(_fileSystem, parentFolder);
  22. }
  23. return null;
  24. }
  25. }
  26. public BdInfoDirectoryInfo(IFileSystem fileSystem, string path)
  27. {
  28. _fileSystem = fileSystem;
  29. _impl = _fileSystem.GetDirectoryInfo(path);
  30. }
  31. private BdInfoDirectoryInfo(IFileSystem fileSystem, FileSystemMetadata impl)
  32. {
  33. _fileSystem = fileSystem;
  34. _impl = impl;
  35. }
  36. public IDirectoryInfo[] GetDirectories()
  37. {
  38. return Array.ConvertAll(_fileSystem.GetDirectories(_impl.FullName).ToArray(),
  39. x => new BdInfoDirectoryInfo(_fileSystem, x));
  40. }
  41. public IFileInfo[] GetFiles()
  42. {
  43. return Array.ConvertAll(_fileSystem.GetFiles(_impl.FullName).ToArray(),
  44. x => new BdInfoFileInfo(_fileSystem, x));
  45. }
  46. public IFileInfo[] GetFiles(string searchPattern)
  47. {
  48. return Array.ConvertAll(_fileSystem.GetFiles(_impl.FullName, new[] { searchPattern }, false, false).ToArray(),
  49. x => new BdInfoFileInfo(_fileSystem, x));
  50. }
  51. public IFileInfo[] GetFiles(string searchPattern, System.IO.SearchOption searchOption)
  52. {
  53. return Array.ConvertAll(_fileSystem.GetFiles(_impl.FullName, new[] { searchPattern }, false,
  54. searchOption.HasFlag(System.IO.SearchOption.AllDirectories)).ToArray(),
  55. x => new BdInfoFileInfo(_fileSystem, x));
  56. }
  57. public static IDirectoryInfo FromFileSystemPath(Model.IO.IFileSystem fs, string path)
  58. {
  59. return new BdInfoDirectoryInfo(fs, path);
  60. }
  61. }
  62. }