フォルダの一覧を取得する簡単なサンプルを掲載します。
http://hanatyan.sakura.ne.jp/dotnet/folder04.htm
これを実際に動かすとRECYECLEフォルダや
System Volume Imformation フォルダを取得してしまいます。
そこでこれらを除去したわけですが、他にフォルダのアクセス権などを
考慮した方がいいのかと考え始めています。
今後、スマートフォン市場でWindows8に移行していく中で、
上記やそれ以外の注意点について何かアドバイスがあったらお願いします。
No.2ベストアンサー
- 回答日時:
前回も書きましたが、どのような場合にプログラムからドライブ直下のフォルダーの一覧を取得
する必要があるのですか?
大抵の場合検索等が目的かと思うのですが、検索が目的ならば、ある程度スタートフォルダーを
絞り込むとか、又は、ゴミ箱の中まで含めて探すような場合は、除外すべきではないし、
元々、引き合いにだされた私のサンプルは、エクスプローラの仕様と合せておりますので、除外は
しておりません。
ゴミ箱を除外する為に IF 文を全てのフォルダーに対して回せばその分余計に時間がかかりますよ。
(除外するより、除外しない方が処理が早い)
同様に、アクセス権、共有フォルダー、属性等を調べればその分余計に時間がかかります。
(ご自分で計測して確かめて見て下さい。)
今のハードディスクは要領が多くなってきているので、C ドライブ内の全てのフォルダーを
調べるのは結構時間がかかります。
従って、そう言った作業が頻繁に必要なら、フォルダーの一覧のインデックスを作って
管理すれば、一々新たに調べる必要がないし、時間がごく僅かですみます。
(エクスプローラのように)
私は、最初の1回で取得したフォルダー一覧を保存しておき次からそれを使って検索する為
2回目以降の検索は、数秒でハードディスク内を検索でき、エクスプローラの検索より
はるかに速く検索できます。
又、どのような場合に使用したいかで、フォルダの参照ダイアログボックス や DirListBox
のようなコントロールを使った方が便利な場合があります。
>そうではなくてWindows8やアップルサイドでの
>.NetFrameworkのアプリ展開を考慮するに当たって、
最初の質問のタイトルや内容にはなかった事ですよね。
そのようなあいまいな質問には、お答えしかねますし、時期バージョンの仕様が確定しない内は
どなたも答えられないのではないでしょうか?
この回答への補足
そろそろ日柄も経ちましたの締めます。
実際にデバッグをして見つかった種々の問題、
質問した自分の想定と実際の反応、
なかなか思うようにはいかないものです。
当面はTry構文でcatchする項目を充実させることにします。
それではまたの機会がありましたら宜しくお願いします。
>元々、引き合いにだされた私のサンプルは
ひょっとして作者様でしたか・・・これは失礼しました。
>どのような場合にプログラムからドライブ直下のフォルダーの一覧を取得
これは一概に言えないのです。多くのプロジェクトで使う予定でおります。
直近では書類で使う画像の加工を命じられております。
>ゴミ箱を除外する為に IF 文を全てのフォルダーに対して
>回せばその分余計に時間がかかりますよ。
確かにその通りなのですが、まわす回数もそれ程多くなく、
処理待ちも考慮してもらえるので、
ループの外側で判断を外すというのはあまり考えていません。
なるほど、インデックス等は今後の参考にさせて頂きます。
>最初の質問のタイトルや内容にはなかった事ですよね
スマートフォン市場やWindows8というのでは不十分でしたか。
この手落ちも今後の反省材料とさせて頂きます。
今回はRECYCERなど特殊なフォルダがデバッグで見つかったので、
それで嫌な予感みたいなものもあったのでお聞きしました。
No.1
- 回答日時:
そもそもドライブ直下のフォルダーの一覧をプログラムから取得する必要がある場合が限定される
かと思うのですが、その時の用途に合わせて、特定のフォルダーを除外したいなら、その時に
IF 文の1行も追加すれば済む事なので、大げさに考えなくてもその時々に応じて対応すれば
いいのではないでしょうか?
又、それらのフォルダーを何の為に除外する必要があるのでしょうか?
それよりも、一覧の取得に時間がかからないように工夫する方が先決かと。
ご回答有り難うございます。
ご指摘の内容は質問に書いた段階で解決済みです。
そうではなくてWindows8やアップルサイドでの
.NetFrameworkのアプリ展開を考慮するに当たって、
何か注意点があったら教えて下さい。
>それらのフォルダーを何の為に除外する必要があるのでしょうか?
>それよりも、一覧の取得に時間がかからないように工夫する方が先決かと。
仰っていることがさっぱり理解ができません。
まさしく処理に時間がかからないようにするためです。
一覧の取得に時間がかからない工夫とはsyatem.ioを使うなということですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- サーバー windowsサーバの権限設定、フォルダ削除できないアカウントを作りたい 1 2023/04/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VB.NETで DataRow()を利用して...
-
VBAでActiveDirectoryのユーザ...
-
VBA:小数点以下の数字を取得で...
-
Flexgridで選択行の列の値を取...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
利用者側のMACアドレスを取得し...
-
JavaScriptでWindowsログオンID...
-
getParameter と getAttribut...
-
コンボボックス表示文字列を取...
-
Spreadの選択行の取得について
-
ListView 項目の選択/選択解除...
-
リクエストからArrayListのデー...
-
PCインストール済みのアプリケ...
-
HKEY_USERS下のキーを取得したい
-
C言語にてプログラミングを行っ...
-
リモートコンピュータのPC名を...
-
Excel VBA でログインしてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
VB .netにて現在時刻+1時間後...
-
コンボボックス表示文字列を取...
-
コンボボックスの表示は最大何行?
おすすめ情報