0

重複の可能性:
C#でディレクトリサイズ(ディレクトリ内のファイル)を取得するにはどうすればよいですか?

SQLServerのバックアップを作成するプログラムがあります。実行するたびに、バックアップファイルが作成されます。しかし、ファイルは蓄積されています。

バックアップディレクトリのサイズをチェックするメソッドを追加したいのですが、サイズがしきい値サイズよりも大きくなると、最後のファイルが削除されます。

どうすればこれができるか知っていますか?

どうもありがとう!

4

2 に答える 2

0

リスト内のすべてのファイルを追加し、CompareToをFileInfoCreationTimeと組み合わせて使用​​してリストを並べ替えます。次に、ディレクトリに残したいファイルの数に基づいて、それに応じてファイルを削除します。

ディレクトリファイルの計算に関しては、FileInfo Lengthを使用して合計サイズの変数をインクリメントしながら、ディレクトリ内のすべてのファイルを反復処理するだけです。

于 2012-09-02T21:48:43.437 に答える
0

DirectoryInfoと少しのLinqを使用するのは簡単な作業です

public void RemoveLastFile(string folderPath, long dirSizeLimit)
{
    long size = 0;
    var files = new DirectoryInfo(folderPath).GetFiles();
    files.Sum(f => size += f.Length);
    if(size > dirSizeLimit)
    {
       var sorted = files.OrderBy(f => f.LastWriteTime);
       File.Delete(sorted.First().FullName);
   }
}

もちろん、これは一例です。エラーチェックを少し追加する必要があります。
PS私はFileInfoクラスのプロパティLastWriteTimeを使用しましたが、あなたの場合(バックアップファイル)はCreationTimeと同等だと思います。

于 2012-09-02T22:10:52.193 に答える