Web
Analytics

社畜ゲートウェイ

京成・京急を中心に取り上げる阪急ファンのブログです。日本一遅い速報を届けます。

MENU

【スポンサーリンク】

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

【スポンサーリンク】

f:id:neko_britannia:20200515220156j:plain

フォルダの存在確認の方法です。方法はファイルの存在確認とほぼ同じです。

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

フォルダの存在を確認する方法はいくつかありますが、シンプルに「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です。その他のチェック方法は知識として知っておきましょう。

関連記事

www.stellacreate.com

参考サイト

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

docs.microsoft.com

DirectoryExists()メソッド

docs.microsoft.com

DirectoryInfo.Exists プロパティ

docs.microsoft.com

Dir関数

docs.microsoft.com