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()メソッドに、ファイルのパスを渡してあげるだけで、ファイルの存在チェックが実行されます。参考に、フォーム画面は以下のようにしています。
実行ボタンを押下すると、テキストボックスに入っている値をチェックする仕組みです。ファイルパスを入力し、ファイルが存在すれば「ファイルがあるよ!」、ファイルが存在しなければ「ファイルがないよ!」とメッセージボックスが出てきます。上のフォームの様に、テキストボックスと実行ボタンを用意して、IFブロックのソースコードをコピペしてみて下さい。
何故、ファイルの存在チェックが必要なのか
ファイルの存在チェックを実施する必要がある理由としては、ファイル操作の時にファイルが存在していないと、実行時エラーが発生してしまうからです。例えば、ファイルを読み込んで、ファイルの内容をテキストボックスに表示するプログラムがあったとします。プログラムの実行順序としては、
- ファイルオープン
- ファイルの内容を1行ずつ読み込み、メモリ上に格納する
- メモリ上に格納したファイルの内容をテキストボックスに表示する
という順序になります。しかし、ファイルオープンの時に読み込みたいファイルが存在していないとファイルオープンでエラーが発生してしまいます。そうなるとバグです。
ファイルオープンだけではありません。ファイルのコピー・移動。削除なども、ファイルが存在しないと実行時エラーになります。そのため、ファイル操作を実施する際には、最初にファイルの存在をチェックする必要があります。
他のファイル存在チェックの方法
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()メソッドと結果は同じですが、引数に空白を渡すとエラーメッセージが異なります(「パスの形式が無効です」と出てくる)。
編集後記
ファイルの存在チェックをする前に、例えば、ファイルパスを手入力するようなアプリケーションだったら(そんなユーザービリティ無視するようなものがあるのだろうかは知らないですけど)、未入力チェックだったり、拡張子が入っているか確認したりなどが必要ですけね。
関連記事
参考サイト
.