Entwickler-Ecke

IO, XML und Registry - Directory.Exists ... nicht


DarkWinter - Fr 23.07.21 11:16
Titel: Directory.Exists ... nicht

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if (Directory.Exists(@"\!Loks"))
{
    System.Windows.MessageBox.Show("Ordner existiert");
}
else
{
    System.Windows.MessageBox.Show("Ordner existiert nicht");
}


Hi

Ordner existiert - aber C# sagt nein :? - übersehe ich da was?

Verzeichnis ist im gleichen Ordner wie die exe.

Moderiert von user profile iconTh69: Schreibfehler im Titel geändert.


Th69 - Fr 23.07.21 11:29

Weißt du denn nicht, was der Backslash \ bedeutet?

Außerdem hat das nichts direkt mit C# zu tun, sondern mit der Laufzeitumgebung bzw. dem Betriebssystem.


DarkWinter - Fr 23.07.21 11:36

Naja Unterverzeichnis :?: z.B. @"C:\!Loks"

Edit: tatsächlich ohne Strich gehts :oops:

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Fr 23.07.21 12:10

Ein Backslash am Anfang eines Pfads bedeutet "zurück zum Root-Verzeichnis", daher auch meistens @"C:\...", anstatt nur @"C:..." (denn dann bezieht sich der weitere Pfad auf das zur Zeit aktuelle Verzeichnis des Laufwerks).


Ralf Jansen - Fr 23.07.21 14:15

Du prüfst jetzt einen relativen Pfad ob da dein Ordner drin existiert.
Der relative Pfad ist relativ zum Arbeitsordner. Der Arbeitsordner ist nicht zwingend der gleiche Ordner in dem deine Exe liegt.
Der Arbeitsordner kann sich auch während der Ausführung deines Programms ändern.

Wenn du es relativ du deiner Anwendung willst musst du schon den Pfad zu deiner Executable nehmen und den absoluten Pfad zu dem Unterfolder zusammenbauen und diesen prüfen.