VB.NETでのファイル名取得とは?方法をご紹介!

ファイルパスからファイル名を取得したり、指定したディレクトリ配下にあるファイル一覧を取得したりできます。
VB.NETでのファイル名取得について
今回は、VB.NETでファイル名を取得する方法について説明します。VB.NETでは、ファイルパスからファイル名を取得したり、指定したディレクトリ配下にあるファイル一覧を取得したりできます。
VB.NETでのファイル名取得に興味のある方はぜひご覧ください。
パスから取得
VB.NETでは、ファイルパスの文字列からファイル名を取得することができます。また、ファイル名だけでなく、拡張子やディレクトリ名も取得することができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Dim file As String = "C:\test\hoge.txt" Console.WriteLine("file : " + file) ' ファイル名 Console.WriteLine("GetFileName() : " + System.IO.Path.GetFileName(file)) ' ファイル名(拡張子なし) Console.WriteLine("GetFileNameWithoutExtension() : " + System.IO.Path.GetFileNameWithoutExtension(file)) ' ディレクトリ名 Console.WriteLine("GetDirectoryName() : " + System.IO.Path.GetDirectoryName(file)) ' 拡張子 Console.WriteLine("GetExtension() : " + System.IO.Path.GetExtension(file)) ' ルートディレクトリ Console.WriteLine("GetPathRoot() : " + System.IO.Path.GetPathRoot(file)) |
実行結果は以下のようになります。
1 2 3 4 5 6 |
file : C:\test\hoge.txt GetFileName() : hoge.txt GetFileNameWithoutExtension() : hoge GetDirectoryName() : C:\test GetExtension() : .txt GetPathRoot() : C:\ |
このように、VB.NETではファイルパスの文字列から、ファイル名を取得することができます。
指定パス配下のファイル取得
指定したディレクトリ配下のファイルを取得できます。事前に「C:\test」ディレクトリ配下に何かファイルを格納しておいてください。
下記のサンプルでは「C:\test」ディレクトリに、テキスト1.txt~テキスト3.txtおよび写真1.jpg~写真3.jpgを格納しています。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
' ファイル一覧取得 Dim files As String() = System.IO.Directory.GetFiles("C:\test", "*", System.IO.SearchOption.AllDirectories) ' ファイル一覧表示 For Each file As String In files Console.WriteLine(file) Next |
実行結果は以下のようになります。
1 2 3 4 5 6 |
C:\test\テキスト1.txt C:\test\テキスト2.txt C:\test\テキスト3.txt C:\test\写真1.jpg C:\test\写真2.jpg C:\test\写真3.jpg |
ファイル一覧が取得できたことが分かります。
取得結果に対して、先ほど説明したGetFileName()などを行えば、ファイル名だけを取得することができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
' ファイル一覧取得 Dim files As String() = System.IO.Directory.GetFiles("C:\test", "*", System.IO.SearchOption.AllDirectories) ' ファイル一覧表示 For Each file As String In files Console.WriteLine(System.IO.Path.GetFileName(file)) Next |
実行結果は以下のようになります。
1 2 3 4 5 6 |
テキスト1.txt テキスト2.txt テキスト3.txt 写真1.jpg 写真2.jpg 写真3.jpg |
ファイル名が取得できていることが分かります。
このように、VB.NETでは、Directory.GetFiles()を使用して、指定したディレクトリ配下のファイルを取得できます。
指定パス配下のファイル取得(ワイルドカード検索)
先ほど説明したDirectory.GetFiles()では、検索条件に該当するファイルのみを取得することができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
' ファイル一覧取得 Dim files As String() = System.IO.Directory.GetFiles("C:\test", "*.txt", System.IO.SearchOption.AllDirectories) ' ファイル一覧表示 For Each file As String In files Console.WriteLine(System.IO.Path.GetFileName(file)) Next |
実行結果は以下のようになります。
1 2 3 |
テキスト1.txt テキスト2.txt テキスト3.txt |
Directory.GetFiles()の第2引数に”*”を指定すると、すべてのファイルを取得します。上のサンプルコードのように、”*.txt”を指定すると、.txtファイルのみを取得します。
検索条件として、”*”だけでなく、”?”も指定できます。
もちろんDirectory.GetFiles(“C:\test”, “テキスト1.txt”, System.IO.SearchOption.AllDirectories)とすることで、該当ファイルをピンポイントで検索することもできます。
指定パス配下のファイル取得(再帰検索)
次に、Directory.GetFiles()の第3引数について説明します。
これは対象ディレクトリのサブディレクトリを検索するか否かを指定するもので、以下が指定できます。
・AllDirectories:サブディレクトリも含めて再帰的に検索
・TopDirectoryOnly:サブディレクトリを含めずに検索
事前に、「C:\test」配下にtest2ディレクトリを作成し、すべてのファイルをtest2ディレクトリに移動しておきます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Console.WriteLine("---AllDirectories-------------") ' ファイル一覧取得 Dim files1 As String() = System.IO.Directory.GetFiles("C:\test", "*.txt", System.IO.SearchOption.AllDirectories) ' ファイル一覧表示 For Each file1 As String In files1 Console.WriteLine(System.IO.Path.GetFileName(file1)) Next Console.WriteLine("---TopDirectoryOnly-----------") ' ファイル一覧取得 Dim files2 As String() = System.IO.Directory.GetFiles("C:\test", "*.txt", System.IO.SearchOption.TopDirectoryOnly) ' ファイル一覧表示 For Each file2 As String In files2 Console.WriteLine(System.IO.Path.GetFileName(file2)) Next Console.WriteLine("------------------------------") |
実行結果は以下のようになります。
1 2 3 4 5 6 |
---AllDirectories------------- テキスト1.txt テキスト2.txt テキスト3.txt ---TopDirectoryOnly----------- ------------------------------ |
AllDirectoriesを指定すると、サブディレクトリを含めて再帰的に検索しますのでファイルが見つかりますが、TopDirectoryOnlyを指定するとファイルが見つからないことが分かります。
取得結果のソート
VB.NETでは、取得したファイル一覧について、ソートすることができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' ファイル一覧取得 Dim files As String() = System.IO.Directory.GetFiles("C:\test", "*.txt", System.IO.SearchOption.AllDirectories) ' ファイル一覧表示 For Each file As String In files Console.WriteLine(System.IO.Path.GetFileName(file)) Next Console.WriteLine("----------------") ' ファイル一覧の降順ソート Array.Reverse(files) ' ファイル一覧表示 For Each file As String In files Console.WriteLine(System.IO.Path.GetFileName(file)) Next |
実行結果は以下のようになります。
1 2 3 4 5 6 7 |
テキスト1.txt テキスト2.txt テキスト3.txt ---------------- テキスト3.txt テキスト2.txt テキスト1.txt |
このように、VB.NETでは、取得結果を降順にソートできることが分かります。
VB.NETのファイル名取得を理解しよう
VB.NETでは、ファイルパスからファイル名を取得したり、指定したディレクトリ配下にあるファイル一覧を取得したりできます。
ファイルをワイルドカードで検索したり、ディレクトリを再帰的に検索することもできます。ぜひご自身でソースコードを書いて、理解を深めてください。