2015-08-27 7 views
6

Ich habe einen Ordner auf dem Pfad C:\Users\MYUSER\Desktop\TEST\ erstellt.Directory.CreateDirectory erstellt nicht immer den Ordner

Ich habe den folgenden Code:

private const string DIR = @"C:\Users\MYUSER\Desktop\TEST\tmp"; 

static void Main(string[] args) 
{ 
    if (Directory.Exists(DIR)) 
     Directory.Delete(DIR); 

    for (int i = 0; i < 100; i++) 
    { 
     var dinfo = Directory.CreateDirectory(DIR); 
     Directory.Delete(DIR); 
    } 

    Directory.CreateDirectory(DIR); 
} 

Wenn ich den Code ausführen, die meiste Zeit es OK läuft, und ich kann sehen, dass es einen Ordner tmp innerhalb des Ordners ist TEST.

Mein Problem ist, dass einige andere Zeiten Directory.CreateDirectory(DIR) kein Verzeichnis überhaupt erstellt. Ich überprüfte sogar die DirectoryInfo es zurück und seine Exists Eigenschaft ist false und Directory.CreateDirectory(DIR) wird nicht funktionieren, weil der Ordner nicht existiert. Gibt es eine Erklärung für dieses seltsame Verhalten?

+0

Auf NTFS müssen Sie dazu berechtigt sein. –

+4

Gibt es einen echten Grund für diese Art von Code oder nur für den Test? –

+0

Sind Sie sicher, dass Sie keine Ausnahme bekommen? Ist das Verzeichnis leer? –

Antwort

0

Hatte das gleiche Problem. Es sind keine Fehler aufgetreten, Ordner wurden jedoch nicht erstellt. Habe gerade die Ursache des Problems und die einfache Lösung entdeckt.

hatte ich so etwas wie:

Directory.CreateDirectory("/Users/MyAccount/NewFolder"); 
#Some code... 
Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder"); 

Dies würde scheitern Ordner unter Verzeichnisse erstellen, bevor sie erstellt wurden.

Lösung: Fügen Sie am Ende des Pfads einen Schrägstrich hinzu.

Statt:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder"); 

Do:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder/"); 

den abschließenden Hinzufügen slash das Problem behoben, und es schafft nun den Ordner 100% der Zeit. Keine Probleme mehr.

Verwandte Themen