12

ディレクトリ内の最も古いファイルの削除について質問があります。

状況は次のとおりです。

ディレクトリ内のファイル数を 5 ファイルに制限したいと考えています。その制限に達したら、ディレクトリ内の最も古いファイルを見つけて削除し、新しいファイルをコピーできるようにしたいと思います。

filewatcher を使用するように言われましたが、その機能を使用したことがありません。

4

2 に答える 2

35
using System.IO; using System.Linq;

foreach (var fi in new DirectoryInfo(@"x:\whatever").GetFiles().OrderByDescending(x => x.LastWriteTime).Skip(5))
    fi.Delete();

ディレクトリ名、Skip() の引数、および LastWriteTime を変更して、「最も古い」を定義します。

上記はすべてのファイルを取得し、それらを最初に新しいものに並べ替え、最初の 5 つをスキップし、残りを削除します。

于 2013-11-13T09:03:33.830 に答える
5

を使用DirectoryInfo.EnumerateFilesしてフォルダ内のファイルを取得し、 で並べ替え、CreationTimeEnumerable.OrderByDescending使用Enumerable.Take(5)して最後に作成された 5 つのファイルを取得できます。それ以上ある場合は、List.ForEachそれらを削除します。

var files = new DirectoryInfo("path").EnumerateFiles()
     .OrderByDescending(f => f.CreationTime)
     .Skip(5)
     .ToList();
files.ForEach(f => f.Delete());
于 2013-11-13T09:04:32.233 に答える