Наступний метод здійснює пошук у файлі, який починається зі шляху запуску програми (папка * .exe). Якщо файл там не знайдеться, пошук батьківських папок шукається до тих пір, поки не буде знайдено або файл, або коренева папка. nullповертається, якщо файл не знайдено.
public static FileInfo FindApplicationFile(string fileName)
{
string startPath = Path.Combine(Application.StartupPath, fileName);
FileInfo file = new FileInfo(startPath);
while (!file.Exists) {
if (file.Directory.Parent == null) {
return null;
}
DirectoryInfo parentDir = file.Directory.Parent;
file = new FileInfo(Path.Combine(parentDir.FullName, file.Name));
}
return file;
}
Примітка: Application.StartupPathзазвичай використовується в програмах WinForms, але він працює і в консольних програмах; однак вам доведеться встановити посилання на System.Windows.Formsзбірку. Ви можете замінити Application.StartupPath,
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)якщо хочете.