Windowsオペレーティングシステムでは、サードパーティのライブラリやFindFirstFile、FindNextFileなどを使用せずに、特定のディレクトリ内のファイルをどのように反復処理しますか?FindFirstFileを使用せずにディレクトリ内のファイルを反復する
答えて
FindFirstFileがWindowsの主なファイル列挙方法であるとすれば、他に何が得られますか? FindFirstFileによって呼び出されるNT API関数(ZwQueryDirectoryFileなど)がありますが、これらはより複雑であり、本当のメリットはありません。
本当のメリットはありませんか?初心者はAPCを使うことができますが、ネイティブ関数は渡されたバッファに収まる数のエントリを返すことができます( 'ReturnSingleEntry'が' FALSE'であると仮定します)。これにより、関数呼び出しが少なくなり、一般的にははるかに高速になるはずです。しかし、おそらくMFT解析を使用した場合と同じくらい速くはありません。 – 0xC0000022L
@ 0xc0000022l番号がありますか?ディレクトリスキャンを最適化しようとする人が数人いることがわかりましたが、結果はそれほど有望ではありませんでした。しかし、これはOS特有のものかもしれません。 ZwQueryDirectoryFileはそれほど高速ではないようでした(複数のエントリに対して1つの呼び出しを使用することについてのあなたの意見を理解しています)。もちろん、FATやMFTの直接構文解析は違いになります。 –
問題は、この方法がネットワークドライブにとって遅すぎるということです。私の場合、10〜20分以上かかることがあります。しかし、Windowsエクスプローラで同じディレクトリに移動するとうまく動作します。 – maamaa
管理コードを使用できる場合は、Directory.EnumerateFilesを使用するとプログラミングが簡単になります。
指定されたパスにファイル名 の列挙可能なコレクションを返します。
ディレクトリ内のファイルを一覧表示するには、Windows Scriptingライブラリの一部であるScripting.FileSystemObject
オブジェクトを使用してください。このオブジェクトをC++、delphi、またはCOMへのアクセスをサポートする言語で使用できます。
チェック好奇心のうち、VBScriptの
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\test"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
- 1. ディレクトリ内のHTMLファイルを反復して使用する - python
- 2. MATLABを使用してディレクトリ内のファイル名のみを反復する
- 3. GNU Makeを使用してファイルのディレクトリを反復する
- 4. ディレクトリ内のトラフファイルを反復する
- 5. FindFirstFileディレクトリをスキップする
- 6. ディレクトリ内のファイルを反復してコンテンツを検索する
- 7. ディレクトリ内の大規模なファイルを反復する
- 8. MATLABは(evalのを使用せずに)反復ごとに
- 9. ファイルを複数回反復せずにデータを取り出す
- 10. ディレクトリ内のファイルを反復処理し、INFOをMySQLデータベースにプラグインする方法
- 11. デフォルトの./iosディレクトリを使用せずにネイティブiOSアプリケーション設定に反応する
- 12. 再帰的なPHPを使用せずに親子を反復する
- 13. セッションからオブジェクトリストを取得し、JSTLを使用せずに反復する
- 14. BOOST_FOREACHを使用してディレクトリ内のすべてのファイルを反復処理します
- 15. ワイルドカードを使用せずにunixのディレクトリの内容を反復処理するにはどうすればよいですか?
- 16. まず非反復ストリーム内の文字
- 17. ディレクトリ名を使用せずにフォルダからExcelファイルを開く
- 18. 反復処理DirectoryStreamと同時に、ディレクトリの内容を変更
- 19. Simulink/Reuseサブシステムのバス信号をコピーせずに反復する
- 20. 反復せずにパンダの16進カラムを変換する
- 21. MS Access VBA:レコードを反復せずにメディアンを計算する
- 22. 頂点を反復せずにエッジにアクセスする
- 23. 反復せずにリストに配列を追加する
- 24. 収集を使わずにapache sparkのRDDで反復する
- 25. Cシャープを使用してアクティブなディレクトリにグループを反復する
- 26. ディレクトリを反復し、各ファイルを割り当てる
- 27. 反復せずにPythonでExcelを検索する
- 28. ソートせずにグループを反復処理する方法は?
- 29. Perl:INIファイルを反復する
- 30. 反応のマップ関数を使用してjsonファイルを反復する
でこのサンプルコードは、FindFirstFileと間違って何ですか? –
エクスプローラウィンドウのスクリーンショットを作成し、それをOCRしますか? Win32では、正確に同じジョブを実行するための2つの方法が日常的には提供されていません。 –
理由を説明してください。 – peterchen