2009-12-13 16 views

Antwort

36

Versuchen Sie, die folgenden

bool isDir = Directory.Exists(somePath) 

Beachten Sie, dass dies nicht wirklich Sie nicht sagen, ob ein Verzeichnis obwohl vorhanden ist. Es besagt, dass ein Verzeichnis zu einem Zeitpunkt in der jüngsten Vergangenheit existiert hat, auf den der aktuelle Prozess Zugriff hatte. Wenn Sie versuchen, auf das Verzeichnis zuzugreifen, kann es bereits gelöscht oder auf andere Weise geändert werden, um zu verhindern, dass Ihr Prozess darauf zugreift.

Kurz gesagt, es ist durchaus möglich, dass die zweite Zeile fehlschlägt, weil das Verzeichnis nicht existiert.

if (Directory.Exists(somePath)) { 
    var files = Directory.GetFiles(somePath); 
} 

Ich schrieb einen Blog-Eintrag zu diesem Thema ist vor kurzem ein lesenswert, wenn Sie Methoden wie Directory.Exists verwenden eine Entscheidung

6

Wenn der Pfad existiert, können Sie verwenden: Directory.Exists, um festzustellen, ob es sich um eine Datei oder ein Verzeichnis handelt.

bool existsAndIsDirectory = Directory.Exists(path); 

Wenn der Pfad nicht existiert, dann gibt es keine Möglichkeit zu sagen, wenn der Pfad eine Datei oder ein Verzeichnis ist, weil es entweder sein könnte.

29

Sie könnten auch auszukommen :

FileAttributes attr = File.GetAttributes(@"c:\Path\To\Somewhere"); 
if((attr & FileAttributes.Directory) == FileAttributes.Directory) 
{ 
    //it's a directory 
} 
+1

das ist die Antwort tatsächlich! – nawfal

7

Sie können auch nach der Datei att suchen Ributes von File.GetAttributes() (natürlich nur, wenn die Datei/Verzeichnis existiert). Der Typ FileAttributes hat einen Wert mit dem Namen Directory, der angibt, ob der Pfad ein Verzeichnis ist.

Verwandte Themen