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

【VB.NET】フルパスからファイル名・拡張子を取得する

「フルパスが分かるから、ファイル名だけが欲しい!」「とあるファイルの拡張子を知りたい!」という場合があると思います。そんな時は「System.IO.Pathクラス」のメソッドを使用することで解決できます。

【スポンサーリンク】

フルパスからファイル名を取得する

フルパスからファイル名を取得する方法は2種類あります。「ファイル名+拡張子」を取得する方法と、「ファイル名」のみを取得する方法です。使い方は同じなので、目的によって使い分けて下さい。

f:id:neko_britannia:20200526205943j:plain

例として、ファイルのパスやファイル名を入れて実行ボタンを押下すると、ファイル名を取得する簡単なフォームを作成しました。以降のソースコードは実行ボタン押下のクリックイベント内に記載するソースコードです。

拡張子ありファイル名を取得する

拡張子ありのファイル名を取得する場合、System.IO.PathクラスのGetFileNameメソッドを使用します。使用方法はとても簡単で、GetFileNameメソッドの引数にファイルパスを渡すだけです。使用例は以下のソースコードです。

Private Sub cmdGetFileName_Click(sender As Object, e As EventArgs) Handles cmdGetExtension.Click
    Dim strGetName As String = Nothing
    Try

        'ファイル名を取得する(拡張子あり)
        strGetName = System.IO.Path.GetFileName(txtPath.Text)
        MessageBox.Show(strGetName, "ファイル名(拡張子あり)", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実行すると、以下のメッセージボックスが出てきます。

f:id:neko_britannia:20200526211105j:plain

ちゃんと拡張子ありのファイル名が取得できていますね。

拡張子なしファイル名を取得する

拡張子なしのファイル名を取得する場合、System.IO.PathクラスのGetFileNameWithoutExtensionメソッドを使用します。使い方はGetFileNameメソッドと同じで、GetFileNameWithoutExtensionメソッドの引数にファイルパスを渡すだけです。使用例は以下のソースコードです。

Private Sub cmdGetFileNameWithoutExtension_Click(sender As Object, e As EventArgs) Handles cmdGetExtension.Click
    Dim strGetName As String = Nothing
    Try

        'ファイル名を取得する(拡張子なし)
        strGetName = System.IO.Path.GetFileNameWithoutExtension(txtPath.Text)
        MessageBox.Show(strGetName, "ファイル名(拡張子なし)", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実行すると、メッセージボックスが出てきます。

f:id:neko_britannia:20200526211610j:plain

「test.txt」というファイル名ですが、ちゃんと拡張子を含まない「test」が表示されています。尚、フルパスでなくても、「ファイル名+拡張子」の記載であればファイル名のみ取得が可能です。

【スポンサーリンク】

フルパスから拡張子を取得する

拡張子ありのファイル名、拡張子なしのファイル名、と来たら、今度は拡張子のみ取得したいですね。System.IO.Pathクラスに、拡張子を取得するメソッドが用意されています。拡張子のみを取得したい場合は、GetExtensionメソッドを使用します。使用例は以下のソースコードです。

Private Sub cmdGetExtension_Click(sender As Object, e As EventArgs) Handles cmdGetExtension.Click
    Dim strGetName As String = Nothing
    Try

        '拡張子を取得する
        strGetName = System.IO.Path.GetExtension(txtPath.Text)
        MessageBox.Show(strGetName, "拡張子", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

実行すると、メッセージボックスが出てきます。

f:id:neko_britannia:20200526212059j:plain

「test.txt」というファイル名の拡張子「.txt」のみ表示されますね。尚、フルパスでなくても、「ファイル名+拡張子」の記載であれば拡張子のみ取得が可能です。

【スポンサーリンク】

編集後記

ファイル操作をする場合、今回紹介したファイル名の取得や拡張子の取得は割と高い頻度で使用することになります。ですが、引数にファイルパスを渡すだけなので、使用方法はとても簡単ですね。

【スポンサーリンク】

参考サイト

Path.GetFileName メソッド (System.IO)
読み取り専用の文字範囲で表されたファイル パスのファイル名と拡張子を返します。
Path.GetFileNameWithoutExtension メソッド (System.IO)
読み取り専用の文字範囲で表されたファイル パスの拡張子のないファイル名を返します。
Path.GetExtension メソッド (System.IO)
読み取り専用の文字範囲で表されたファイル パスの拡張子を返します。

.