DirectoryInfoExt.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.IO;
  3. using System.IO.Abstractions;
  4. using System.Linq;
  5. namespace Quadarax.Foundation.Core.IO.Extensions
  6. {
  7. public static class DirectoryInfoExt
  8. {
  9. public static Stream CreateFile(this IDirectoryInfo dirInfo, string fileNameWithExtension, bool forceOverwrite = false)
  10. {
  11. if (dirInfo == null)
  12. throw new ArgumentNullException(nameof(dirInfo));
  13. if (string.IsNullOrEmpty(fileNameWithExtension))
  14. throw new ArgumentNullException(nameof(fileNameWithExtension));
  15. if (forceOverwrite)
  16. {
  17. var fileInfo = dirInfo.GetFiles(fileNameWithExtension).FirstOrDefault();
  18. fileInfo?.Delete();
  19. }
  20. var fullFileName = dirInfo.FileSystem.Path.Combine(dirInfo.FullName, fileNameWithExtension);
  21. return dirInfo.FileSystem.File.OpenWrite(fullFileName);
  22. }
  23. public static bool DeleteFile(this IDirectoryInfo dirInfo, string fileNameWithExtension)
  24. {
  25. if (dirInfo == null)
  26. throw new ArgumentNullException(nameof(dirInfo));
  27. if (string.IsNullOrEmpty(fileNameWithExtension))
  28. throw new ArgumentNullException(nameof(fileNameWithExtension));
  29. var fileInfo = dirInfo.GetFiles(fileNameWithExtension).FirstOrDefault();
  30. var result = fileInfo != null;
  31. fileInfo?.Delete();
  32. return result;
  33. }
  34. public static string GetFullFileName(this IDirectoryInfo dirInfo, string fileNameWithExtension)
  35. {
  36. if (dirInfo == null)
  37. throw new ArgumentNullException(nameof(dirInfo));
  38. if (string.IsNullOrEmpty(fileNameWithExtension))
  39. throw new ArgumentNullException(nameof(fileNameWithExtension));
  40. return dirInfo.FileSystem.Path.Combine(dirInfo.FullName, fileNameWithExtension);
  41. }
  42. public static bool ExistsFile(this IDirectoryInfo dirInfo, string fileNameWithExtension)
  43. {
  44. if (dirInfo == null)
  45. throw new ArgumentNullException(nameof(dirInfo));
  46. if (string.IsNullOrEmpty(fileNameWithExtension))
  47. throw new ArgumentNullException(nameof(fileNameWithExtension));
  48. return dirInfo.GetFiles(fileNameWithExtension).Any();
  49. }
  50. public static bool Exists(this IDirectoryInfo dirInfo, string subDirectoryName)
  51. {
  52. if (dirInfo == null)
  53. throw new ArgumentNullException(nameof(dirInfo));
  54. if (string.IsNullOrEmpty(subDirectoryName))
  55. throw new ArgumentNullException(nameof(subDirectoryName));
  56. return dirInfo.Exists && dirInfo.GetDirectories(subDirectoryName, SearchOption.TopDirectoryOnly).Any();
  57. }
  58. public static IDirectoryInfo GetDirectory(this IDirectoryInfo dirInfo, string subDirectoryName)
  59. {
  60. if (dirInfo == null)
  61. throw new ArgumentNullException(nameof(dirInfo));
  62. if (string.IsNullOrEmpty(subDirectoryName))
  63. throw new ArgumentNullException(nameof(subDirectoryName));
  64. return dirInfo.GetDirectories(subDirectoryName, SearchOption.TopDirectoryOnly).FirstOrDefault();
  65. }
  66. }
  67. }