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

【VB.NET】ディレクトリ(フォルダ)の存在を確認する方法

VB.NETにおける、フォルダの存在確認の方法です。方法はファイルの存在確認とほぼ同じです。

【スポンサーリンク】

フォルダの存在を確認する方法

フォルダの存在を確認する方法はいくつかありますが、シンプルに「System.IO.Directory.Exists()」を使用する方法を紹介します。

Private Sub cmdDirCheck_Click(sender As Object, e As EventArgs) Handles cmdDirCheck.Click
    Try
        If System.IO.Directory.Exists(txtDirPath.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.DirectoryクラスのExists()メソッドの引数に、パスを渡すだけでOKです。

f:id:neko_britannia:20200520210920j:plain

画面はこんな感じ。実行ボタンを押して、存在すれば「フォルダがあるよ!」、存在しなければ「フォルダがないよ!」とメッセージボックスが表示されます。

【スポンサーリンク】

フォルダの存在チェックが必要な理由

ファイルの存在チェックの時にも述べましたが、フォルダ操作の時にフォルダが存在していないと、実行時エラーが発生してしまいます。

また既にフォルダが存在している場合に、上書きの考慮が必要になる場合があります。例えば、フォルダを新規作成しようとする時に、既に同名のフォルダが存在する場合に、上書きして良いのか、それとも、別名にするのかという判断をするために、フォルダの存在チェックが必要になります。

【スポンサーリンク】

他のフォルダ存在チェックの方法

基本的にはSystem.IO.Directory.Exists()メソッドを利用すれば良いのですが、他にも方法があります。ただし、あくまでも参考程度に知識として持っておくというレベルでとどめておいてください。今から紹介する方法をどこかで見かけたときに、「System.IO.Directory.Exists()メソッド一緒なんだな」というレベルの認識を持っていれば大丈夫です。

FileSystem.DirectoryExists

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

FileSystemクラスのDirectoryExistsメソッドを利用する方法です。結果は同じです。

System.IO.DirectoryInfo

Dim objDirInfo As New System.IO.DirectoryInfo(txtDirPath.Text)

If objDirInfo.Exists = True Then
    'フォルダが存在する
    MessageBox.Show("フォルダがあるよ!", "フォルダ存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Else
    'フォルダが存在しない
    MessageBox.Show("フォルダがないよ!", "フォルダ存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If

DirectoryInfoのExistsプロパティを参照する方法です。System.IO.Directory.Exists()メソッドと結果は同じですが、引数に空白を渡すとエラーメッセージが異なります(「パスの形式が無効です」と出てくる)。

Dir関数

If Dir(txtDirPath.Text, vbDirectory) <> "" Then
    'フォルダが存在する
    MessageBox.Show("フォルダがあるよ!", "フォルダ存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Else
    'フォルダが存在しない
    MessageBox.Show("フォルダがないよ!", "フォルダ存在チェック", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If

VB6やVBAの経験者なら何度も見たと思う「Dir関数」です。注意すべきは、尾に「¥」が入っているとフォルダが存在しない扱いになります。Dir関数以外の方法だと、末尾に「¥」があっても無くても、しっかりと判定してくれます。なので、基本的には使用しない方が良いかと。既存ソースの調査や改修で発見したら要注意ですね。

【スポンサーリンク】

編集後記

Dir関数がちょっとクセ者感がありますが、VB6からのマイグレーションしたシステムなどでよく見られます。基本的にはSystem.IO.Directory.Exists()メソッドを利用してファイルの存在チェックを実施すればOKです。その他のチェック方法は知識として知っておきましょう。

【スポンサーリンク】

関連記事

https://www.stellacreate.com/entry/vbnet-file-exists

【VB.NET】特定フォルダのファイル一覧を取得する
VB.NETで、特定フォルダ内にあるファイルの一覧を取得する方法です。
【スポンサーリンク】

参考サイト

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

Directory.Exists(String) メソッド (System.IO)
指定したパスがディスク上の既存のディレクトリを参照しているかどうかを確認します。

DirectoryExists()メソッド

FileSystem.DirectoryExists(String) メソッド (Microsoft.VisualBasic.FileIO)
指定されたディレクトリが存在する場合、True を返します。

DirectoryInfo.Exists プロパティ

DirectoryInfo.Exists プロパティ (System.IO)
ディレクトリが存在するかどうかを示す値を取得します。

Dir関数

FileSystem.Dir メソッド (Microsoft.VisualBasic)
指定パターンまたはファイル属性と一致するファイル名、ディレクトリ名、フォルダー名を表す文字列、またはドライブのボリューム ラベルを表す文字列を返します。 FileSystem を使用すると、Dir 関数を使用した場合より I/O 操作の生産...

.