Poniższa metoda przeszukuje plik rozpoczynający się od ścieżki uruchamiania aplikacji (* .exe folderu). Jeśli plik nie zostanie znaleziony, foldery nadrzędne są wyszukiwane do momentu znalezienia pliku lub dotarcia do folderu głównego. null
jest zwracana, jeśli plik nie został znaleziony.
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;
}
Uwaga: Application.StartupPath
jest zwykle stosowany w aplikacjach WinForms, ale działa w aplikacjach konsolowych, jak dobrze; jednak trzeba będzie ustawić odniesienie do zespołu System.Windows.Forms
. Jeśli wolisz, możesz zastąpić Application.StartupPath
przez
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
.
ilu folderów? – CR41G14
powiedz 4 foldery w górę. – developer747
zwykle względna ścieżka działa jak ".. \ .. \ .. \ .. \ DółFolder", ale to zależy od tego, co dokładnie próbujesz zrobić dla ...? – DiskJunky