記事内に広告が含まれています。

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

VB.NETにおける、ファイルの存在を確認する方法です。チェック処理でよくある話ですね。早速行きましょう。

【スポンサーリンク】

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

方法はいくつかありますが、一番シンプルかつ、簡単な方法が、「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()メソッドと結果は同じですが、引数に空白を渡すとエラーメッセージが異なります(「パスの形式が無効です」と出てくる)。

【スポンサーリンク】

編集後記

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

【スポンサーリンク】

関連記事

【VB.NET】ディレクトリ(フォルダ)の存在を確認する方法
VB.NETにおける、フォルダの存在確認の方法です。方法はファイルの存在確認とほぼ同じです。
【VB.NET】特定フォルダのファイル一覧を取得する
VB.NETで、特定フォルダ内にあるファイルの一覧を取得する方法です。
【スポンサーリンク】

参考サイト

File.Exists(String) メソッド (System.IO)
指定したファイルが存在するかどうかを確認します。
FileSystem.FileExists(String) メソッド (Microsoft.VisualBasic.FileIO)
指定されたファイルが存在する場合、True を返します。
FileInfo.Exists プロパティ (System.IO)
ファイルが存在するかどうかを示す値を取得します。

.