• ベストアンサー

フォルダ一覧取得の設計について

フォルダの一覧を取得する簡単なサンプルを掲載します。 http://hanatyan.sakura.ne.jp/dotnet/folder04.htm これを実際に動かすとRECYECLEフォルダや System Volume Imformation フォルダを取得してしまいます。 そこでこれらを除去したわけですが、他にフォルダのアクセス権などを 考慮した方がいいのかと考え始めています。 今後、スマートフォン市場でWindows8に移行していく中で、 上記やそれ以外の注意点について何かアドバイスがあったらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

前回も書きましたが、どのような場合にプログラムからドライブ直下のフォルダーの一覧を取得 する必要があるのですか? 大抵の場合検索等が目的かと思うのですが、検索が目的ならば、ある程度スタートフォルダーを 絞り込むとか、又は、ゴミ箱の中まで含めて探すような場合は、除外すべきではないし、 元々、引き合いにだされた私のサンプルは、エクスプローラの仕様と合せておりますので、除外は しておりません。 ゴミ箱を除外する為に IF 文を全てのフォルダーに対して回せばその分余計に時間がかかりますよ。 (除外するより、除外しない方が処理が早い) 同様に、アクセス権、共有フォルダー、属性等を調べればその分余計に時間がかかります。 (ご自分で計測して確かめて見て下さい。) 今のハードディスクは要領が多くなってきているので、C ドライブ内の全てのフォルダーを 調べるのは結構時間がかかります。 従って、そう言った作業が頻繁に必要なら、フォルダーの一覧のインデックスを作って 管理すれば、一々新たに調べる必要がないし、時間がごく僅かですみます。 (エクスプローラのように) 私は、最初の1回で取得したフォルダー一覧を保存しておき次からそれを使って検索する為 2回目以降の検索は、数秒でハードディスク内を検索でき、エクスプローラの検索より はるかに速く検索できます。 又、どのような場合に使用したいかで、フォルダの参照ダイアログボックス や DirListBox のようなコントロールを使った方が便利な場合があります。 >そうではなくてWindows8やアップルサイドでの >.NetFrameworkのアプリ展開を考慮するに当たって、 最初の質問のタイトルや内容にはなかった事ですよね。 そのようなあいまいな質問には、お答えしかねますし、時期バージョンの仕様が確定しない内は どなたも答えられないのではないでしょうか?

flyingbee
質問者

お礼

>元々、引き合いにだされた私のサンプルは ひょっとして作者様でしたか・・・これは失礼しました。 >どのような場合にプログラムからドライブ直下のフォルダーの一覧を取得 これは一概に言えないのです。多くのプロジェクトで使う予定でおります。 直近では書類で使う画像の加工を命じられております。 >ゴミ箱を除外する為に IF 文を全てのフォルダーに対して >回せばその分余計に時間がかかりますよ。 確かにその通りなのですが、まわす回数もそれ程多くなく、 処理待ちも考慮してもらえるので、 ループの外側で判断を外すというのはあまり考えていません。 なるほど、インデックス等は今後の参考にさせて頂きます。 >最初の質問のタイトルや内容にはなかった事ですよね スマートフォン市場やWindows8というのでは不十分でしたか。 この手落ちも今後の反省材料とさせて頂きます。 今回はRECYCERなど特殊なフォルダがデバッグで見つかったので、 それで嫌な予感みたいなものもあったのでお聞きしました。

flyingbee
質問者

補足

そろそろ日柄も経ちましたの締めます。 実際にデバッグをして見つかった種々の問題、 質問した自分の想定と実際の反応、 なかなか思うようにはいかないものです。 当面はTry構文でcatchする項目を充実させることにします。 それではまたの機会がありましたら宜しくお願いします。

その他の回答 (1)

回答No.1

そもそもドライブ直下のフォルダーの一覧をプログラムから取得する必要がある場合が限定される かと思うのですが、その時の用途に合わせて、特定のフォルダーを除外したいなら、その時に IF 文の1行も追加すれば済む事なので、大げさに考えなくてもその時々に応じて対応すれば いいのではないでしょうか? 又、それらのフォルダーを何の為に除外する必要があるのでしょうか? それよりも、一覧の取得に時間がかからないように工夫する方が先決かと。

flyingbee
質問者

お礼

ご回答有り難うございます。 ご指摘の内容は質問に書いた段階で解決済みです。 そうではなくてWindows8やアップルサイドでの .NetFrameworkのアプリ展開を考慮するに当たって、 何か注意点があったら教えて下さい。 >それらのフォルダーを何の為に除外する必要があるのでしょうか? >それよりも、一覧の取得に時間がかからないように工夫する方が先決かと。 仰っていることがさっぱり理解ができません。 まさしく処理に時間がかからないようにするためです。 一覧の取得に時間がかからない工夫とはsyatem.ioを使うなということですか?

関連するQ&A