BdInfoDirectoryInfo.cs 2.3 KB

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