C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 93 を表示中)
■55746 / )  古い日付名ファイルの削除方法
□投稿者/ asuka (24回)-(2010/12/13(Mon) 11:56:58)

分類:[C#] 

お世話になっております。

古い日付名ファイルの削除ロジックについてお知恵を貸して頂ければ幸いです。

指定ディレクトリにあるデータをバックアップしております。
例:
20101201_1.mdb
20101201_2.mdb
20101202_1.mdb
20101202_2.mdb
20101203_3.mdb
20101204_1.mdb
20101205_1.mdb


ファイル名は[YYYYMMDD_x.mdb]形式で、MDBファイルに約2Gの制限があることから2Gを超える場合は、

分割ファイルとしてxの箇所が1からはじまりインクリメントしていく形です。

バックアップファイルの保持日数を設定で指定出来るようにしております。

例えば保持数を2日とした場合は、最新の日付から2日分を保持しますので、例の場合ですと、
20101204_1.mdb
20101205_1.mdb
が残り、その他は全て削除される仕様です。



この仕様を実現するにあたり、良い方法はありませんでしょうか?

現状僕の乏しい知識で考えているロジックは、
1.バックアップ先指定ディレクトリをワイルドカードを使用してファイル一覧取得
Directory.GetFiles(strSaveDir, "????????_*.mdb", SearchOption.TopDirectoryOnly);
2.取得したファイル名一覧をループで回して先頭8文字(YYYYMMDD)部分を取得
3.先頭8文字(YYYYMMDD)部分ユリウス値(LONG)に変換
 →日付の大小比較方法が分からないため年月日をLONGに直して比較しようとしています。
  良い方法があればご教授願います。
4.先頭8文字(YYYYMMDD)部分ユリウス値(LONG)に変換した値をArrayListへ格納してソート(降順)
5.バックアップファイルの保持日数になるまでfor分をデクリメントしながらArrayListの中身を削除
 →削除する対象は残すファイル
  ArrayListに残ったファイルを削除するため
6.残ったArrayList内のユリウス値(LONG)を年月日に戻す
7.6で戻したファイル一覧を削除


まだ実装しておりませんが、どう考えても効率が悪そうなのでもっと良い方法があればご教授願いたい次第です。

よろしくお願い致します。


---
VS2010
.Net2.0
Win32アプリC#での実装
返信 編集キー/


管理者用

- Child Tree -