【WPF】C#でファイルの容量をグラフで可視化する方法【ソースコード付き】

当ページのリンクには広告が含まれています。

以前の記事で、とあるサーバの使用量の増加推移を調べるため、「指定フォルダ配下に存在するファイルの情報(ファイル名、ファイルサイズ、作成日など)を全て表示するコマンド」を作成したという記事を書きました。

あの時は、結果をEXCELに読み込んでグラフ化していたのですが、今後定期的にこの作業を行う必要がありそうなので、ファイル情報取得~集計~グラフ作成までの一連の処理を行うツールを作ってみました。

皆様のプログラム作成において、何かの参考になればと思ったのでソースコード一式を公開したいと思います。

目次

プログラムの概要

今回作ったのは下記のようなツールです。

グラフのX軸ラベルが重なったり、処理中のプログレスリングが少々ぎこちない動きだったり、対象フォルダ指定が単純なテキスト入力だったりと、結構手を抜いている部分は多々ありますが、その辺はご了承下さい。

ちなみに対象フォルダのテキスト入力部分については、フォルダをドラッグ&ドロップで指定できるようになっています。

このツールは、指定したフォルダ配下のファイルをサブフォルダも含めて検索し、ファイル作成日を対象にファイルサイズを集計、グラフ化するものです。

また、次のような機能を持っています。

  • 対象フォルダをドラッグ&ドロップで指定可能
  • 集計する単位は、年ごと、月ごと、日ごとの3つが選択可能です。
  • 一覧部分は検索した全てのファイル情報を表示(ファイルサイズの単位はバイト)
  • グラフ部分は集計単位の棒グラフと、累計の折れ線グラフを表示(単位はメガバイト)
  • グラフ部分はマウス操作で拡大・縮小が可能
  • ESCキーで検索を中断し、その時点の集計結果を表示

使い方

対象フォルダの入力欄に、集計したいフォルダ名を入力して、「解析」ボタンをクリックするだけです。

ちなみに、ファイル名をワイルドカード付きで指定することが可能で、例えば

"D:\My Documents\Visual Studio 2019\Projects\*.c" と入力すると、拡張子が ".c" のものだけを集計対象にすることが可能です。

また、グラフ部はマウスホイールで拡大/縮小が行え、ドラッグ&ドロップで上下左右にグラフをスクロールさせることが可能です。

使用しているライブラリなど

グラフを描画する部分はフリーのグラフ描画ライブラリ「ScottPlot」の Ver4.1.68(2023/11/22時点で最新)を使用しています。

「ScottPlot」のインストール方法は、「【WPF】いちばんやさしいScottPlot の使い方(WindowsForm共通) | 初心者DIYプログラミング入門」の記事をご覧ください。

尚、ScottPlotは「【WPF】C#+ScottPlotで複合グラフのユーザーコントロールを作る! | 初心者DIYプログラミング入門」の記事で紹介したユーザーコントロール化したものを使っています。

また、処理中に表示するプログレスリングは、「【WPF】C#で処理中にぐるぐる回るGIFを表示したい! | 初心者DIYプログラミング入門」 で紹介した方法(WindowsFormsHost経由でPictureBoxにアニメーションGIFを登録して表示)を使っています。

ソースコードの解説

それでは、XAMLとC#のソースコードについて、簡単な解説を交えて紹介いたします。

XAMLのソースコード

単純にコントロールを張り付けているだけなので、特に難しい部分は無いかと思います。

C#のソースコード

グラフ表示で使っているユーザーコントロールについては、こちら の記事にソースコードを丸ごと掲載していますので、ここでは省略します。

気を付ける点としては、WindowsFormのPictureBoxを使用しているため、次の3つのアセンブリを参照設定に追加しておくくらいです。

プロジェクト一式のダウンロード

下記リンクからプロジェクト一式のダウンロードが可能です。

NuGetでインストールしたScottPlotも一緒に入っています。

まとめ

今回は指定したフォルダ配下のファイルからファイル情報を取得し、作成日ごとにファイル容量を集計、グラフ化するツールについて、使い方とソースコードを紹介しました。

このサイトで今までに紹介した内容(ScottPlot、複合グラフ作成ユーザーコントロール、PictureBoxを使ったプログレスリングの表示、フォルダ配下のファイル情報取得)を使っています。

個々の記事を見て使い方がピンとこなかった方においても、今回の記事で具体的な利用方法が掴めたのではないかと思います。

皆さんの何かのお役に立てれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次