2

5 時間ごとにタイマーを実行し、4 日以上経過したファイルをフォルダーから削除したいと考えています。サンプルコードを教えてください。

4

2 に答える 2

8
DateTime CutOffDate = DateTime.Now.AddDays(-4)
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fi = di.GetFiles();

for (int i = 0; i < fi.Length; i++)
{
    if (fi[i].LastWriteTime < CutOffDate)
    {
        File.Delete(fi[i].FullName);
    }
}

LastWriteTimeプロパティを他のものに置き換えることができます。これは、私が持っているアプリで画像キャッシュをクリアするときに使用するものです。

編集:

これにはタイマーの部分は含まれていませんが...その部分は自分で考えさせます。少しグーグルすると、スケジュールに従ってそれを行う方法がいくつか表示されるはずです。

于 2009-09-03T15:24:59.313 に答える
4

言及されていないので、System.Threading.Timerこのようなものには a を使用することをお勧めします。実装例を次に示します。

System.Threading.Timer DeleteFileTimer = null;

private void CreateStartTimer()
{
    TimeSpan InitialInterval = new TimeSpan(0,0,5);
    TimeSpan RegularInterval = new TimeSpan(5,0,0);

    DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
            InitialInterval, RegularInterval);

}

private void QueryDeleteFiles(object state)
{
    //Delete Files Here... (Fires Every Five Hours).
    //Warning: Don't update any UI elements from here without Invoke()ing
    System.Diagnostics.Debug.WriteLine("Deleting Files...");
}

private void StopDestroyTimer()
{
    DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
    System.Threading.Timeout.Infinite);

    DeleteFileTimer.Dispose();
}

このようにして、最小限の手間で Windows サービスでファイル削除コードを実行できます。

于 2009-09-03T15:35:16.893 に答える