DirectoryInfoExt.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 ExistsFile(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. return dirInfo.GetFiles(fileNameWithExtension).Any();
  30. }
  31. public static bool Exists(this IDirectoryInfo dirInfo, string subDirectoryName)
  32. {
  33. if (dirInfo == null)
  34. throw new ArgumentNullException(nameof(dirInfo));
  35. if (string.IsNullOrEmpty(subDirectoryName))
  36. throw new ArgumentNullException(nameof(subDirectoryName));
  37. return dirInfo.Exists && dirInfo.GetDirectories(subDirectoryName, SearchOption.TopDirectoryOnly).Any();
  38. }
  39. public static IDirectoryInfo GetDirectory(this IDirectoryInfo dirInfo, string subDirectoryName)
  40. {
  41. if (dirInfo == null)
  42. throw new ArgumentNullException(nameof(dirInfo));
  43. if (string.IsNullOrEmpty(subDirectoryName))
  44. throw new ArgumentNullException(nameof(subDirectoryName));
  45. return dirInfo.GetDirectories(subDirectoryName, SearchOption.TopDirectoryOnly).FirstOrDefault();
  46. }
  47. }
  48. }