• ベストアンサー

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

フォルダの一覧を取得する簡単なサンプルを掲載します。 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

  • VBSでフォルダの一覧を取得させたいです。

    VBSでフォルダの一覧を取得させたいです。 PC内の利用中全ドライブからフォルダを総ナメしたいのですが、ルート直下のフォルダはどうやって取得すればよいのでしょうか? その下の階層以降はいろいろサイトで見たのでなんとかなりそうなのですが。 よろしければソースが乗っているサイト、もしくはサンプルでもいただければ助かります。 よろしくお願いします。

  • Excel-VBA フォルダの日時を取得・設定

    目的は、Excel-VBAでフォルダのタイムスタンプを「取得・設定」したいのですが、 非力にてクマロの書き方が分かりません。 何方かご教授よろしくお願いいたします。 下記はサンプルコードを探していて、これだと目に留まったのですが、 Excel-VBAマクロで実行するコードに書き直す事ができませんでした。 '--------------------------------------------- 'VB.NET フォルダのタイムスタンプ取得・設定(6個)-(SNo.032) 'http://hanatyan.sakura.ne.jp/dotnet/index.html '--------------------------------------------- 'Sample1.フォルダの作成日時を取得する Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim dt As DateTime dt = System.IO.Directory.GetCreationTime("c:test\") Debug.WriteLine(dt) End Sub '--------------------------------------------- 'Sample4.フォルダの作成日時を設定する Private Sub Button4_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click 'Directory.SetCreationTime メソッド System.IO.Directory.SetCreationTime("c:test\", DateTime.Now) End Sub '--------------------------------------------- 以上

  • VB6でマウスのドラッグで範囲を選択し画像を取得

    こんかいVBを初めて扱っています。 マウスのドラッグで範囲を選択し画像を取得してPictureBox2 に表示 ということをVB6で作成しようとしています。 参考になりそうなサイトは見つけたのですが、 http://hanatyan.sakura.ne.jp/dotnet/zu06.htm VBのバージョンが違うのでコンパイルは通りません。 関数の名前が変わっているから出来ないのか、 同じ機能は無いから違う方法を取らなければいけないのか? わからないことだらけで、ハマっています。 もし、何でも良いのでご存知の方がいらっしゃいましたら、 何卒、ご教授宜しくお願い致します。

  • GetAttrが原因?

    http://officetanaka.net/excel/vba/tips/tips95.htm を参考に、 フォルダの一覧を取得するコードを作ってるのですが Sample4ならエラーにならずにフォルダの一覧を取得できるのですが、 フォルダ名にドットがある場合も取得されてしまうので、Sample6を使いたいのですが、 If GetAttr(buf) And vbDirectory Then の部分で、 「53ファイルが見つかりません。」 のエラーになります。 なぜでしょうか?

  • サブフォルダの親フォルダを変えたい

    フォルダの中のサブフォルダを取得してくて、 http://officetanaka.net/excel/vba/tips/tips95.htm の --------------------------------------------------------- Sub Sample4() Dim buf As String, msg As String buf = Dir("*.*", vbDirectory) Do While buf <> "" If InStr(buf, ".") = 0 Then msg = msg & buf & vbCrLf buf = Dir() Loop MsgBox msg End Sub --------------------------------------------------------- をやってみたら、サブフォルダを取得できたのですが、 上記のコードを実行すると 元々のフォルダのパスが「C:\Users」で、 「C:\Users」のサブフォルダが取得されてしまいます。 でも上記のコードでは、「C:\Users」は指定してないと思うのですが、 なぜ「C:\Users」のサブフォルダが取得されてしまうのでしょうか? 例えば 「C:\Users」ではなく、「C:\Program Files」のサブフォルダを取得するには、 どのようにコードを書き換えればいいのでしょうか? ご教授よろしくお願いします。

  • FFFTPでアップロードしたとき「ファイル一覧取得正常終了」と表示されるのに

    お世話になります。 初めてワード2003を使ってホームページを作成しています。 SINOBIでフリーのHPを取得して、FFFTPもフリーのものを使っています。 http://ftp.hm/ffftp/manual.shtml のページを見ながら、アップロードをしてみたのですが、ファイル一覧取得は正常終了するのに、どうしてもサイトが表示されません。 現在、homeフォルダ内にあるファイル名は、「index.htm」となっていて、SINOBIの説明を見ても、インデックスはこれでも大丈夫のようです。 初心者なので、あまり難しい用語が分からなくて、一つ一つ説明通りにやっているのですが、もし、ページが表示されない原因がお分かりになる方がおられたら、どうかご教授下さい。 ちなみに、ページ制作は http://www.d3.dion.ne.jp/~tnk/W2K/page5.htm のページを参考にしました。 宜しくお願いします。

  • vb.net2005でexcelを保存ではなく表示する方法。(プロセス

    vb.net2005でexcelを保存ではなく表示する方法。(プロセスを解放することを考慮) 現在、下記URLのような感じでvb.net2005でExcel出力を行なおうとしています。 http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm このURLでは保存しているので問題ないのですが、 今回、保存はせずに画面に表示したいと考えております。 URLのコードのxlBook.Close(False)を消せばよいのでしょうが、 そうするとExcelのプロセスがPCの電源を落とすまで残ってしまいます。 http://homepage1.nifty.com/rucio/main/technique/teq_15.htm 表示のみしたい場合はどのような記述をすればよいのでしょうか?

  • サンプルコードを公開しているサイトについて

    今検索エンジンでサンプルコードを探しています。 多種様々なコードが掲載していて、 分り易い説明が掲載しているサイトとか。 自分はVB2008を使用していますが、種類豊富なサイトが見つかりません。 良いサイトありませんか? 数種類位教えて下さい 「私はこのサイトで様々なソースがあって便利だ」 「種類が豊富で良い」等の紹介もお願いします。 ●現在自分がブックマーク(お気に入り)に入れているサイト● @DOBON.NET プログラミング道@ ​http://dobon.net/vb/dotnet/index.html​ @これがほしかった!厳選サンプルツール集@ ​http://anetm.com/dev/tools/vbdotnet/​ @MSDN Home@ ​http://www.microsoft.com/japan/msdn/thisweek/wednesday/​ @VBレスキュー(花ちゃん)@ ​http://hanatyan.sakura.ne.jp/​

  • HP作成に関して

    ひな形のサンプルを表示する小窓を表示させたくて 以下のソースを使ってHPをアップロードしましたが小窓の中身が表示されません。URLは合っていると思います。hinaというフォルダにひな形を入れています。一つ上の階層からリンクさせる感じです。 <a href="http://URL/hina/sakura.htm" onclick=" window.open('index.htm', '_blank', 'width=400,height=400'); return false;">Sample</a> javascriptには詳しくないので困っています どこか違っていますか?教えて下さい。よろしくお願いします!

  • DirectoryInfo型配列ソート(C#)

    Visual C# でちょっとしたプログラムを作成中です。 その中で、フォルダの一覧をTreeViewに取得させています(下記ページを参考にしてます)。 http://uchukamen.com/Programming1/TreeViewByDk/index.htm ここで、フォルダの一覧を取得していますが、名前順ではなく不定順になってしまいます。 Stringであれば、Sortで良いのでしょうが、DirectoryInfo型の配列をソートする簡単な方法がありますでしょうか?