VB.NETでファイルの存在を確認する方法について書いています。
VB.NETのプログラムでファイルを使うときに、下記のような場面で活躍します。
- ファイルを読み込もうとしたら存在しなかった
- 保存前に同名ファイルがあるかチェックしたい
- 設定ファイルやログファイルの有無を確認したい
このようなときに使うのがFile.Existsメソッドです。
この記事では、VB.NETでファイルの存在を確認する方法を、サンプルコード付きで解説します。
File.Existsとは?
File.Existsは、指定したパスにファイルが存在するかどうかを確認するメソッドです。
- ファイルが存在する →
True - ファイルが存在しない →
False
というBoolean値を返します。
例外が発生しないため、ファイルチェック用途として非常に安全で使いやすいのが特徴です。
公式ドキュメントはこちらにあります。
File.Existsの基本的な使い方
まずは基本的な書き方を見てみましょう。
Imports System.IO
Dim filePath As String = "C:\test\data.txt"
If File.Exists(filePath) Then
Console.WriteLine("ファイルは存在します")
Else
Console.WriteLine("ファイルは存在しません")
End If
filePathにファイルまで含めた絶対パスが入っています。
次の処理で、File.Existsを使って存在チェックしています。
あればTrueが返ってきて「ファイルは存在します」が出力されます。
ポイント
Imports System.IOを忘れない- 引数には確認したいファイルのフルパスを指定
- 戻り値は
Boolean
ファイルを読み込む前に存在チェックする例
ファイル操作では、存在チェックをしないと例外が発生することがあります。
Dim filePath As String = "C:\test\data.txt"
If File.Exists(filePath) Then
Dim text As String = File.ReadAllText(filePath)
Console.WriteLine(text)
Else
Console.WriteLine("ファイルが見つかりません")
End If
File.ReadAllTextはファイルの文字列を読み込む処理です。
指定されたファイルがない場合に例外エラーになります。
このようにFile.ReadAllTextの前に File.Exists を使うことで、実行時エラーを未然に防ぐことができます。
相対パスでも使える?
File.Existsは相対パスでも使用できます。
Dim filePath As String = "data.txt"
If File.Exists(filePath) Then
Console.WriteLine("存在します")
End If
ただし、相対パスの場合は実行時のカレントディレクトリが基準になるため注意が必要です。
フォルダの存在確認との違い
ファイルとフォルダでは、使用するメソッドが異なります。
| 対象 | メソッド |
|---|---|
| ファイル | File.Exists |
| フォルダ | Directory.Exists |
If Directory.Exists("C:\test") Then
Console.WriteLine("フォルダが存在します")
End If
混同しやすいポイントなので覚えておきましょう。
File.Existsで例外は発生する?
基本的にFile.Existsは例外をスローしません。
- パスが不正
- ファイル名が空文字
- アクセス権がない
といった場合でも、Falseが返るだけです。
そのため、
- Try-Catchを使わずに、安全にファイル存在チェックができる
というメリットがあります。
よくある使いどころ
File.Exists は次のような場面でよく使われます。
- 設定ファイルの有無確認
- ログファイルが存在するかチェック
- 上書き保存前の確認
- ファイル読み込み前の安全対策
VB.NETでのファイル操作では、ほぼ必須のメソッドといえます。
まとめ
今回はVB.NETでファイルの存在確認をする方法をみていきました。
VB.NETでファイルの存在を確認するには、File.Existsを使うのが最も簡単で安全です。
- ファイルが存在するかを
True / Falseで判定できる - 例外が発生しないので安心
- ファイル操作前のチェックに最適
ファイルを扱うプログラムを書く際は、File.Existsで存在確認をするクセをつけておきましょう。

コメント