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