ディレクトリ内の最も古いファイルの削除について質問があります。
状況は次のとおりです。
ディレクトリ内のファイル数を 5 ファイルに制限したいと考えています。その制限に達したら、ディレクトリ内の最も古いファイルを見つけて削除し、新しいファイルをコピーできるようにしたいと思います。
filewatcher を使用するように言われましたが、その機能を使用したことがありません。
ディレクトリ内の最も古いファイルの削除について質問があります。
状況は次のとおりです。
ディレクトリ内のファイル数を 5 ファイルに制限したいと考えています。その制限に達したら、ディレクトリ内の最も古いファイルを見つけて削除し、新しいファイルをコピーできるようにしたいと思います。
filewatcher を使用するように言われましたが、その機能を使用したことがありません。
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 つをスキップし、残りを削除します。
を使用DirectoryInfo.EnumerateFiles
してフォルダ内のファイルを取得し、 で並べ替え、CreationTime
をEnumerable.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());