フォルダ内のファイル名の取得
更新 : 2007 年 11 月
このレッスンでは、My.Computer.FileSystem オブジェクトを使用してフォルダ内のファイル名を取得する方法を説明します。
フォルダとは、ファイルを格納できる Microsoft Windows の領域です。Microsoft Windows にはいくつかの特別なフォルダがあり、これらを使用することで、ドキュメント、ピクチャ、ミュージック ファイルなどのカテゴリにファイルを整理できます。
メモ : |
---|
Windows XP では、これらのフォルダにマイ ドキュメント、マイ ピクチャ、およびマイ ミュージックという名前が付いています。Windows Vista では、これらのフォルダの名前から "マイ" がなくなり、ドキュメント、ピクチャ、およびミュージックという名前になっています。ただし、このレッスンのコードは Windows XP と Windows Vista のどちらでも動作します。 |
このレッスンでは、ピクチャ フォルダにあるピクチャ ファイルを表示できる Picture Viewer アプリケーションを作成します。ListBox で項目を選択すると、対応するグラフィックが PictureBox コントロールに表示されます。
ファイルの取得
特定のファイルが存在するかどうかを調べるには、My.Computer.FileSystem.FileExists メソッドを使用し、フォルダのパスとファイル名を指定します。
フォルダ内のすべてのファイルの名前を取得する必要がある場合は、My オブジェクトを使用して、特定のフォルダに存在するすべてのファイルのコレクションを取得できます。パターンを指定して、一意の名前のファイルを探すこともできます。
指定したフォルダのファイルを返すには、My.Computer.FileSystem.GetFiles メソッドを使用します。オプションとしてワイルドカードのリストを渡すと、返されるファイルのパターンを指定することができます。たとえば、.gif 拡張子を持つファイル (*.gif*) を指定して、GIF (Graphics Interchange Format) イメージのファイルの名前をすべて取得できます。複数の拡張子をコンマで区切ると、(*.jpg*) という拡張子で示される JPEG (Joint Photographic Experts Group) など、より多くのグラフィック形式の種類を追加できます。
ピクチャなどの特別なフォルダは、My.Computer.FileSystem.SpecialDirectories オブジェクトを使用して指定できます。これにより、各ファイルの名前が、完全パスも含めて返されます。返されたファイル名をループ処理し、各ファイル名を ListBox に追加できます。
やってみよう
アプリケーションのユーザー インターフェイス (UI) を作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [テンプレート] ペインで、[Windows アプリケーション] をクリックします。
[プロジェクト名] ボックスに「Picture Viewer」と入力し、[OK] をクリックします。
新しい Windows フォーム プロジェクトが開きます。
フォームをクリックし、[プロパティ ウィンドウ] で次のプロパティを変更します。
プロパティ
値
Text
Picture Viewer
Size
400, 472
フォームに ListBox コントロールを追加します。既定の名前「ListBox1」はそのままにしておきます。
ListBox をクリックし、次のプロパティを変更します。
プロパティ
値
HorizontalScrollBar
True
Size
370, 82
フォームに PictureBox コントロールを追加します。既定の名前「PictureBox1」はそのままにしておきます。
PictureBox をクリックし、次のプロパティを変更します。
プロパティ
値
BorderStyle
FixedSingle
SizeMode
StretchImage
Size
370, 285
Button コントロールをフォームに追加します。
Button の次のプロパティを変更します。
プロパティ
値
Name
LoadPictures
Text
Load Pictures
Size
80, 23
Picture Viewer の UI を作成したら、ファイル名を取得するコードを作成できます。
ファイル名を取得するには
[Load Pictures] ボタンをダブルクリックし、コード エディタで既定のイベント ハンドラを入力します。
LoadPictures_Click イベント ハンドラに次のコードを追加して、ピクチャ フォルダ内の GIF ファイルと JPEG ファイルをすべて取得し、それらのファイル名をリスト ボックスに表示します。このコードでは、SearchTopLevelOnly 検索オプションを使用して、ピクチャ フォルダ内のサブフォルダは検索しないように指定します。
' Clear the list box and the picture box. Me.ListBox1.Items.Clear() Me.PictureBox1.ImageLocation = "" ' Add each image in the Pictures directory to list box. For Each foundImage As String In _ My.Computer.FileSystem.GetFiles( _ My.Computer.FileSystem.SpecialDirectories.MyPictures, _ FileIO.SearchOption.SearchTopLevelOnly, "*.gif*", "*.jpg*") Me.ListBox1.Items.Add(foundImage) Next
次のコードを追加して、ピクチャ フォルダにイメージがない場合は、ユーザーにメッセージ ボックスを表示します。
If Me.ListBox1.Items.Count < 1 Then MsgBox("There are no JPEG or GIF images in" _ & " the Picture folder.") End If
F5 キーを押してプログラムを実行します。
フォームが表示されたら、[Load Pictures] ボタンをクリックします。
ピクチャ ディレクトリ内の GIF ファイルまたは JPEG ファイルのそれぞれについて、ファイル名とパスがリスト ボックスに表示されます。
Picture Viewer アプリケーションを閉じます。
この例では、ピクチャ ディレクトリのファイルのパスが長いため、実際のファイル名を見るには右へスクロールしなければなりません。別の方法として、フォルダのパスをファイル名から切り離して、各文字列を解析する方法もあります。詳細については、「詳細情報 : ファイル パスを解析する」を参照してください。
ピクチャの表示
それぞれのピクチャをプレビューできる機能があったら、リスト ボックスへのファイル名の追加がもっとおもしろくなります。この手順では、ListBox1 の SelectedIndexChanged イベント ハンドラにコードを記述して、選択されたピクチャを PictureBox に表示します。
ピクチャを表示するには
コード エディタで、[クラス名] ドロップダウン リストの ListBox1 をクリックします。
[メソッド名] ボックスで [SelectedIndexChanged] をクリックして、イベント ハンドラを作成します。
ListBox1_SelectedIndexChanged イベント ハンドラに、選択したピクチャを表示する次のコードを追加します。
Me.PictureBox1.ImageLocation = Me.ListBox1.SelectedItem
F5 キーを押してプログラムを実行します。
ボタンをクリックしてピクチャ ディレクトリからファイルを読み込み、リスト ボックスでいずれかのファイル名をクリックします。ボックス内の項目をクリックするたびに、新しいピクチャが表示されます。
Picture Viewer アプリケーションを閉じ、プロジェクトを保存します。このプロジェクトは次のレッスンで使用します。
次の手順
このレッスンでは、フォルダからファイル名を取得し、それらを Windows フォームに表示する方法を説明しました。次のレッスンでは、テキスト ファイルにファイル名を保存する方法について説明します。また、「詳細情報 : ファイル パスを解析する」では、ファイル名を解析する方法をより詳しく説明します。
次のレッスン : 「テキスト ファイルへの書き込み」