FileLocator.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Infrastructure
  7. {
  8. public static class FileLocator
  9. {
  10. public static string LocateXmlFile(string fileName)
  11. {
  12. string currentDirectory = Directory.GetCurrentDirectory();
  13. return LocateXmlFileInDirectoryAndSiblings(currentDirectory, fileName);
  14. }
  15. private static string LocateXmlFileInDirectoryAndSiblings(string directory, string fileName)
  16. {
  17. // Check the current directory
  18. string filePath = Path.Combine(directory, fileName);
  19. if (File.Exists(filePath))
  20. {
  21. return filePath;
  22. }
  23. // Check sibling directories
  24. string parentDirectory = Directory.GetParent(directory)?.FullName;
  25. if (parentDirectory != null)
  26. {
  27. foreach (var siblingDirectory in Directory.GetDirectories(parentDirectory))
  28. {
  29. filePath = Path.Combine(siblingDirectory, fileName);
  30. if (File.Exists(filePath))
  31. {
  32. return filePath;
  33. }
  34. }
  35. }
  36. return null;
  37. }
  38. }
  39. }