0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#でファイルを古い順に削除したかった

Posted at

業務中に定めている条件よりも多かったら削除しなければならない機能を実装しないといけないらしいです。
前提として
・最初の何行かは同じ名前になっています。
・ファイル名には時間が書いてあります。
(業務で学んだことなので一部変えています。)

DeleteFile.cs
var file = Directory.GetFiles(path,Extension//拡張子*.txt)
           .Where(hogeFile => Path.GetFileName(hogeFile).StartsWith("とってきたいファイル名")
           .ToArray();

txt拡張子の物を探して取得しています。

上限を超えていなかったら何もしないのですが...

DeleteFile.cs
var fileDelete = file.Select(f => new(fileInfo(f))
                 .OrderBy(f => f.CreationTime)
                 .Take(file.Length - FileMaxNum)
                 .ToList();

OrderByが時間で昇順にしてくれます。
Takeで先頭の要素から取得してあげます。

後は削除する処理を書けば完了です。

結構簡略化してしまいましたが自分のやり方は
①先頭の名前が同一の拡張子が同じファイルを全て取得する。
②ファイル名の最後が全て同じか判定する。(いらない人もいる)
③上限を超えているか判定
④古いファイルを取り出す。
⑤削除する。
という流れで実装しました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?