2011-09-12 3 views
2

folder = objFSO.GetFolder(<path>)を使用して、ディレクトリのあるファイルのリストを取得しています。aspのディレクトリにあるファイルの一覧をページングする方法は?

For Eachfolder.Filesアレイを超えるファイル名のリストを出力します。

フォルダには何千ものファイルがあり、非常に遅いので、画面にページネーションを追加する必要があります。だから一度に500のファイルをすべて表示する。私はこれが可能であり、すべてのGoogle検索が役に立たなかったのかどうかはわかりません。

誰かが正しい方向に向いていますか?

+0

クライアント側またはサーバー側でFSOオブジェクトを使用していますか? – sternr

+0

申し訳ありませんが、これはサーバー側のスクリプトです。 –

+0

ちょっとした注意:本当に何千ものアイテムに目を通す必要がありますか? maxの結果セットをフィルタリングするほうがよいでしょうか? 100アイテム? – Filburt

答えて

2

最初に、ファイルのリストについて、リスティングを取得し、繰り返しアクセスを高速化するためにどこかの結果を保持(キャッシュ)できますか?これは、私たちがASP.NET Webページを使用しているので、WebCache.Setを使用していますが、必要に応じてテキストファイルに書き込むことができると想像しています。扱われていない

一つの考慮事項はスピードです:

は、私が大量のファイルを一覧表示する際FSOはかなり遅いいくつかの事例証拠 hereを参照してください。私はFileSystemObjectを使ってフォルダ内のファイルをループする小さなVBアプリケーションを持っていました。それはおよそかかった。指定のフォルダ内のすべてのファイル(約2200ファイル)を歩くだけで5-7分。私はDIR()コマンドを使用して切り替えたとき、私は約6-10秒でファイルを歩くことができました。 DIR()にも制限がありますが、速度の要因はFileSystemObjectに対抗する大きな考慮事項でした。明らかに

あなたは、オフセット/ページサイズ

EDITで一度に500をループしまう上場したら:私は、カップルから、これを行うためにWScript.Shellを使用する方法の例を含めます私が見つけたaspfaq.com記事(1 | 2)の

Set objWShell = CreateObject("WScript.Shell") 
Set objCmd = objWShell.Exec("%COMSPEC% /C dir c:\") 
strPResult = objCmd.StdOut.Readall() 
+0

お返事ありがとうございます。データのチャーチはオプションではなく、ディレクトリには常にファイルの追加と削除が行われます。他のアイデアはありますか?私は恐怖が真実かもしれないようです。 –

+0

こんにちはアッシュ、問題ありません。それで、WScript.Shellはあなたの次善の選択肢だと思います。私は上記のサンプルを含んでいます、それは助けて、あなたはそれを実行することができますか? – Aaron

0

私は(here利用可能)数年前にオンラインファイルブラウザを書き、それがFSOでファイルリストを遅くし、ファイルサイズを読んでいたことがわかりました。私がそれをスキップするとすぐに、リストは雷が速くなった。

ページネーションについては、ファイル名の中から「切断された」ADレコードセットを作成し、それを実際の名前のナビゲーションに使用することをお勧めします。ページネーションが組み込まれています...ソートと検索。コード例に興味があるかどうかを教えてください。

+0

ファイルサイズを読み取らずにリストを生成するコードを投稿できますか? –

+0

実際、それは実際の減速を引き起こしたサブフォルダサイズでした...私はこのものに触れてからしばらくしていました。 –

関連する問題