2 Stimmen

Verstehen eines Booleschen Wertes bei DirectoryInfo.Exists

Var fileOpen = new OpenFileD var clickedOk = fileOpen.ShowDialog(); if (!((bool) clickedOk)) return;

var path = fileOpen.FileName;
var diPath = new DirectoryInfo(path);
var fiPath = new FileInfo(path);

Debug.WriteLine(diPath.Exists);

Ich frage mich nur, warum diPath.Exists in diesem Fall falsch ist? Da der Benutzer eine Datei ausgewählt hat, muss das Verzeichnis existieren!? und das tut es...

Ich habe eine Lösung gefunden, indem ich Directory.Exists(fiPath.DirectoryName) aber es scheint seltsam, dass die oben genannten nicht funktioniert, und etwas irritierend, dass andere var nur zu überprüfen, etwas, das ich weiß, ist es existiert, und sollte nur in der Lage sein, die diPath verwenden. Was ist das Problem?

Zu einem verwandten Thema: Angenommen, ich habe eine Verzeichnisinfo für ein Verzeichnis C:\random\spot\here warum gibt es keine Methode, um diese Zeichenkette zu erhalten " C:\random\spot\here "Es scheint, als ob ich nur Elternteil "spot" oder Name "here" bekommen kann. Vielleicht habe ich etwas übersehen.

Danke,

6voto

Dean Harding Punkte 69243

Es gibt eine Datei genannt. path aber es gibt keine Verzeichnis genannt Pfad.

var diPath = new DirectoryInfo(Path.GetDirectoryName(path));

ist wahrscheinlich das, was Sie wollen.

1voto

GrayWizardx Punkte 17771

Da Sie den Dateinamen in den "Pfad" aufnehmen, ist der Pfad ein Blattknoten (d. h. eine Datei) und kein Verzeichnis (ein Verzweigungsknoten). Windows Datei/Pfad Handhabung ist ziemlich wörtlich über diese Art von Dingen.

Wie bereits erwähnt, ist DirectoryInfo oder Path.GetDirectoryName() wahrscheinlich das, was Sie verwenden möchten, wenn Sie mit Pfaden arbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X