2016-04-20 10 views
2

Ich habe den folgenden Beispielcode.Creating Directory aktualisiert die Exists-Eigenschaft nicht auf True

private DirectoryInfo PathDirectoryInfo 
{ 
    get 
    { 
     if (_directoryInfo == null) 
     { 
      // Some logic to create the path 
      // var path = ... 
      _directoryInfo = new DirectoryInfo(path); 
     } 
     return _directoryInfo; 
    } 
} 

public voide SaveFile(string filename) 
{ 
    if (!PathDirectoryInfo.Exists) 
    { 
     PathDirectoryInfo.Create(); 
    } 

    // PathDirectoryInfo.Exists returns false despite the folder has been created. 
    bool folderCreated = PathDirectoryInfo.Exists; // folderCreated == false 

    // Save the file 
    // ... 
} 

Nach MSDN:

Exists Eigenschaft: true, wenn die Datei oder das Verzeichnis vorhanden ist; sonst falsch.

Warum Exists gibt false zurück, nachdem das Verzeichnis erstellt wurde? Fehle ich etwas?

+0

Vielleicht ein Berechtigungsproblem? Das 'PathDirectoryInfo.Exists' wird' false' zurückgeben, wenn ein Fehler auftritt, während versucht wird, den Dateipfad zu bestimmen. – Hypnobrew

+0

Versuchen Sie 'Refresh' auf der' DirectoryInfo' zu nennen. – jmcilhinney

Antwort

3

Sie können Ihre Immobilie dies ändern:

private DirectoryInfo PathDirectoryInfo 
{ 
    get 
    { 
     if (_directoryInfo == null) 
     { 
      // Some logic to create the path 
      // var path = ... 
      _directoryInfo = new DirectoryInfo(path); 
     } 
     else 
     { 
      _directoryInfo.Refresh(); 
     } 

     return _directoryInfo; 
    } 
} 

, die sicherstellen, dass Sie immer aktuelle Informationen verwenden, wenn Sie den Eigenschaftswert erhalten.

Das sagte, es würde Ihnen nicht helfen, wenn Sie den Wert der Eigenschaft nicht wieder dazwischen bekommen. Du bist aber in deinem Fall.