重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちわ。
フォルダを参照してその中身をリストBOXに表示したいのですが、サンプルを見つけて実行したのですがいまいち理解できなかったのでアドバイスくださると助かります。
private void button1_Click(object sender, System.EventArgs e)
{
string systemFolder =
Environment.GetFolderPath    (Environment.SpecialFolder.System);
DirectoryInfo di = new DirectoryInfo(systemFolder);
foreach(FileInfo fi in di.GetFiles())
{
listBox1.Items.Add(fi.Name);
}
}
これでボタン1をクリックするとsystemフォルダの内容がリストに表示されるのですが、そもそもどこのsystemフォルダなのか分かりません・・・。

↑のプログラムが分からず別の方法でまずフォルダ参照ダイアログの
FolderBrowserDialog
を使おうと思ったのですが、ツールBOXに無いのでまた困りました。
どなたか分かる方いたらご指摘お願いします。

A 回答 (1件)

EnvironmentオブジェクトのGetFolderPathメソッドを呼び出す際に、引数にEnvironment.SpecialFolder.Systemを指定すると、ウィンドウズシステムフォルダの絶対パスが返って来ます。

例えば、C:\Windows\System32などが返って来ます。

参考URL
http://dobon.net/vb/dotnet/file/getfolderpath.html
にある通り、GetFolderPathメソッドの引数を色々と変更すると「お気に入り」や「マイドキュメント」のフォルダの絶対パスも拾えます。

以上を踏まえた上で、サンプルでは、ウィンドウズシステムフォルダを取得してリストを作っています。

実は「フォルダ内のファイルリストを作るサンプル」としては「システムフォルダ」ではなく「お気に入り」や「マイドキュメント」や「ディスクトップ」でも、以下のように「C:\temp」でも、どこのフォルダでも構わないのです。

private void button1_Click(object sender, System.EventArgs e)
{
 string getFolder = "C:\\temp";
 DirectoryInfo di = new DirectoryInfo(getFolder);
 foreach(FileInfo fi in di.GetFiles())
 {
  listBox1.Items.Add(fi.Name);
 }
}

サンプルとしては、存在してさえいれば特にどこのフォルダでも構わないので、実行結果に「リストにファイルがたくさん出て来る」ようにする為、システムフォルダを例題に使っただけでしょう。

もし「お気に入り」や「マイドキュメント」にファイルが何も入っていなかった場合リストに何も出てこないですし、もし上記のように「C:\temp」とかフォルダ位置を直書きすると「C:\temp」が無かった時にエラーになってサンプルとして相応しくない物になってしまいます。

そこで「どのWindows(Win98とかWinXPとかWin2000とか)でも必ず存在するフォルダで、しかも、フォルダの中にファイルが沢山入っている所、つまりウィンドウズシステムフォルダ」をサンプルに使った訳です。

参考URL:http://dobon.net/vb/dotnet/file/getfolderpath.html
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございました^^
私でも理解できました。HPも参考にさせてもらいます。お世話様でした。

お礼日時:2004/06/01 13:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!