【VB.Net】更新日時が新しいファイルのタイムスタンプを取得する

どうも!リョクちゃです。

今回は、ファイルのタイムスタンプとして分類される更新日時に注目し、

ファイルの更新日時のタイムスタンプを取得する方法を例を交えて紹介していきます。

今回例として作成するアプリケーションは、

あるフォルダに複数のファイルが保存されています。

この中から最新の更新日時のファイルを見つけ、指定のボックスにファイル名を表示する

といったアプリケーションを作成していきます。

ちなみに前回はこちら、

チェックボックス(CheckBox)はアンケートやいくつかある項目から該当の項目もしくは複数の項目を選択する際に使用されます。ここではチェックボックスの使い方を例を交えて紹介しています。



準備編:フォーム画面の作成

まず最初に下のようなフォーム画面を作成します。

ここで最新のファイル名の下のボックスはReadOnlyにしておきましょう。

ReadOnlyにするには、ボックスを選択後プロパティ欄のReadOnlyという項目を

Trueにすることで設定ができます。(下図ご参考)

ちなみに筆者の環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.2

です。

フォルダのパスが入力されているか確認する

まず、ボタンを押したら動作させるにあたって先に調べたいフォルダのパスが

入力されているかチェックをするコードを書いていきます。

コードは下のようになります。

Me.TextBox1.Text <> “” のとき、

つまり“”(空白)以外の時のみ処理を走らせるようにしています。

<>と書くことで右辺と左辺が等しくない時の条件文になります。

フォルダからすべてのファイルパスを取得する

次に指定のフォルダに保存されているすべてのファイルパスを取得します。

全てのファイルを取得するには、

System.IO.Directory.GetFiles(“調べたいフォルダのパス”)

と書くことですべてのファイルを配列型で受け取ることができます。

コードを書くと下のようになります。

スポンサーリンク




更新日時を取得するための変数を作成

各ファイルごとにファイルの更新日時を取得する前に、取得した更新日時データを

一時的に保存しておく変数を作成してあげます。

今回は、Dictionary型の変数を作成してみようと思います。

Dictionary型は

Dictionary(Of Key, Value)

の表記で表すことができます。

コードは下のようになります。

Keyの型をDateTime、Valueの型をStringとそれぞれ設定しています。



ファイルの更新日時を取得する

それでは、いよいよファイルごとに更新日時を取得していきます。

ファイルの更新日時は、

System.IO.File.GetLastWriteTime(“調べたいファイルのパス”)

と書くことで更新日時が取得できます。

コードは下のようになります。

keyには更新日時、Valueにはファイル名として、それぞれ格納しています。

最新の更新日時を持つファイルをボックスに表示

最後に最新の更新日時を持つファイル名をボックスに表示するコードを書いていきます。

最新の更新日時のファイルを取得するには、Dictionary変数のMaxメソッドを使用します。

これは、変数に格納されている値の中で最も大きいモノを返してくれるメソッドです。

したがって、dictTime内で更新日時が最も大きい(最新)値を表示することになります。

まず、最も大きい値の取得には、

Dictionary.Keys.Max

これでKeyの中で最も大きい値を返します

これだけではファイル名の取得ができないので、

Dictionary(Dictinary.Keys.Max)

と書くことで、KeyのValueを取得します。

したがって、更新日時に関連付けられるファイル名を取得します。

このまま表示してしまうとパスまで表示されてしまいますので、

ファイル名のみを抽出します。

これには

System.IO.Path.GetFileName(“ファイルのパス”)

を使います。

これらを合わせたコードが下のようになります。



実行してみる

実行するにあたって、下のような環境を準備しました。

このフォルダ内のtest.txtが最新のファイルになります。

つまり、test.txtが表示されれば、問題なく動作していることになります。

いざ実行してみます。

フォルダのパスを入力

最新のファイル名を表示

動作自体は問題なくtest.txtを表示することができました。

まとめ

ファイルの更新日時を取得するには、

System.IO.File.GetLastWriteTime(“調べたいファイルのパス”)

ご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク