社畜ゲートウェイ

鉄道が好きな社畜が綴る(時々勧誘撃退を生業としています)

【スポンサーリンク】

【VB.NET】ファイルの存在を確認する方法

【スポンサーリンク】

f:id:neko_britannia:20200515220156j:plain

若手から質問があったので。ファイルの存在を確認する方法です。チェック処理でよくある話ですね。早速行きましょう。

ファイルの存在を確認する方法

方法はいくつかありますが、一番シンプルかつ、簡単な方法が、「System.IO.File.Exists()」を使用する方法です。

Private Sub cmdFileCheck_Click(sender As Object, e As EventArgs) Handles cmdFileCheck.Click
    Try
        If System.IO.File.Exists(txtFilePath.Text) = True Then
            'ファイルが存在する
            MessageBox.Show("ファイルがあるよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        Else
            'ファイルが存在しない
            MessageBox.Show("ファイルがないよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

上記のソースコードはとても簡単なソースコードです。System.IO.FileクラスのExists()メソッドに、ファイルのパスを渡してあげるだけで、ファイルの存在チェックが実行されます。参考に、フォーム画面は以下のようにしています。

f:id:neko_britannia:20200519205105j:plain

実行ボタンを押下すると、テキストボックスに入っている値をチェックする仕組みです。ファイルパスを入力し、ファイルが存在すれば「ファイルがあるよ!」、ファイルが存在しなければ「ファイルがないよ!」とメッセージボックスが出てきます。上のフォームの様に、テキストボックスと実行ボタンを用意して、IFブロックのソースコードをコピペしてみて下さい。

 

何故、ファイルの存在チェックが必要なのか

ファイルの存在チェックを実施する必要がある理由としては、ファイル操作の時にファイルが存在していないと、実行時エラーが発生してしまうからです。例えば、ファイルを読み込んで、ファイルの内容をテキストボックスに表示するプログラムがあったとします。プログラムの実行順序としては、

  1. ファイルオープン
  2. ファイルの内容を1行ずつ読み込み、メモリ上に格納する
  3. メモリ上に格納したファイルの内容をテキストボックスに表示する

という順序になります。しかし、ファイルオープンの時に読み込みたいファイルが存在していないとファイルオープンでエラーが発生してしまいます。そうなるとバグです。

ファイルオープンだけではありません。ファイルのコピー・移動。削除なども、ファイルが存在しないと実行時エラーになります。そのため、ファイル操作を実施する際には、最初にファイルの存在をチェックする必要があります。

 

他のファイル存在チェックの方法

System.IO.File.Exists()メソッド以外にも方法があります。ただ、あくまでも参考程度に留めておいて欲しいです。もし、既存のソースコードを解析している時に発見したら、「System.IO.File.Exists()メソッドと同じなんだな」くらいに思って下さい。

FileSystem.FileExists

If My.Computer.FileSystem.FileExists(txtFilePath.Text) = True Then
    'ファイルが存在する
    MessageBox.Show("ファイルがあるよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Else
    'ファイルが存在しない
    MessageBox.Show("ファイルがないよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If

FileSystem.FileExists()メソッドを使用する方法です。System.IO.File.Exists()メソッドと結果は同じ。

 

System.IO.FileInfo

Dim objFileInfo As New System.IO.FileInfo(txtFilePath.Text)
If objFileInfo.Exists() = True Then
    MessageBox.Show("ファイルがあるよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Else
    MessageBox.Show("ファイルがないよ!", "ファイル存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If

FileInfo.Existsプロパティを使用する方法です。ファイルをオブジェクト化して、プロパティを参照する方法です。System.IO.File.Exists()メソッドと結果は同じですが、引数に空白を渡すとエラーメッセージが異なります(「パスの形式が無効です」と出てくる)。

 

編集後記

ファイルの存在チェックをする前に、例えば、ファイルパスを手入力するようなアプリケーションだったら(そんなユーザービリティ無視するようなものがあるのだろうかは知らないですけど)、未入力チェックだったり、拡張子が入っているか確認したりなどが必要ですけね。

関連記事

www.stellacreate.com

参考サイト

System.IO.File.Exists()メソッド

docs.microsoft.com

FileSystem.FileExists()メソッド

docs.microsoft.com

FileInfo.Exists プロパティ

docs.microsoft.com

【スポンサーリンク】