2016-04-20 5 views
2

次のサンプルコードがあります。ファイルまたはディレクトリが存在する場合はtrue;:MSDNによるとディレクトリを作成してExistsプロパティを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 
    // ... 
} 

は、プロパティ存在しますそれ以外の場合はfalseです。

ディレクトリが作成された後、なぜ虚偽のリターンが存在しますか?何か不足していますか?

+0

許可の問題ですか? 'PathDirectoryInfo.Exists'は、ファイルパスを決定しようとしているときにエラーが発生した場合に' false'を返します。 – Hypnobrew

+0

'DirectoryInfo'に対して' Refresh'を呼び出すことを試みてください。 – jmcilhinney

答えて

3

あなたはこれにあなたの財産を変えるかもしれない:

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

     return _directoryInfo; 
    } 
} 

あなたは、プロパティ値を取得するたびに常に最新の情報を使用していることを確認すること。あなたが間に再びプロパティ値を取得しない場合、それはあなたを助けないだろう、と述べた

。あなたはあなたの場合にもかかわらずです。

関連する問題