Наступний метод здійснює пошук у файлі, який починається зі шляху запуску програми (папка * .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)
якщо хочете.