フォルダ内のファイルをパスで一覧取得したのですが、それをパスからファイル名のみに変換したいのですが、方法が分かりません。
調べたところPath.GetFileName() を使えばできると書かれていたのですが、どのようにすればよいのでしょうか。
コードは以下のようになっております。
※追記
ListBoxへの表示をAddRange()からAdd()に変更しました。
修正版のコードが最新のものとなっています。
コード Dim fbd As FolderBrowserDialog = New FolderBrowserDialog() 'フォルダ選択画面を表示し、OKボタンが押下たとき選択フォルダのパスを表示 If fbd.ShowDialog() = DialogResult.OK Then txtFolder.Text = fbd.SelectedPath 'フォルダ内の一覧をパス形式で配列に取得 Dim files As String() = Directory.GetFiles( txtFolder.Text, "*", SearchOption.TopDirectoryOnly ) '配列をListBoxへ表示 lstFile.Items.Clear() lstFile.Items.AddRange(files) End If
コード(修正済み) Dim fbd As FolderBrowserDialog = New FolderBrowserDialog() 'フォルダ選択画面を表示し、OKボタンが押下たとき選択フォルダのパスを表示 If fbd.ShowDialog() = DialogResult.OK Then txtFolder.Text = fbd.SelectedPath 'フォルダ内の一覧をパス形式で配列に取得 Dim filePath() As String = Directory.GetFiles( txtFolder.Text, "*", SearchOption.TopDirectoryOnly) '配列をListBoxへ表示 lstFile.Items.Clear() For i As Integer = 0 To UBound(filePath) lstFile.Items.Add(filePath(i)) Next End If
フルパスのファイル名がどこに格納されているのか分かりますか?
そのフルパスのファイル名をAddRangeではなくAddでリストボックスに追加することは出来ますか?
もし上記が分からないのであれば、まずは配列について学習することをお勧めします。
Addでリストボックスに追加するようにしてみました。もしよろしければご確認いただけますと幸いです。
MicrosoftのAPI リファレンスは確認されたでしょうか。
サンプル含めて載っていますが…
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.path.getfilename?view=netcore-3.1
Path.GetFileNameを使用する方法を調べられたとのことなので
そこまで出来たのであれば、Path.GetFileNameを使う方法が分かりませんか?
引数に何を渡すのか、戻り値として何が帰ってくるのか理解できれば解決だと思います。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.path.getfilename?view=netframework-4.8#System_IO_Path_GetFileName_System_String_
あと、正しいかどうかはご自身で動作させてみて確認してください。それがデバッグというものです。
その際は、iの値がいくつからいくつまでの値を取るべきなのかしっかり考えてください。
お二人ともありがとうございます。無事にファイル名を抽出することができました。vbを始めて1週間程なもので、小難しく考え過ぎていたのかもしれません。
解決したのであれば、最終的なソースを掲載するなどして自己解決としてください。
回答1件
あなたの回答
tips
プレビュー