6

Windows エクスプローラーと同じ順序でファイルを取得できます

「自然な並べ替え」は知っていますが、必要なものではありません。たとえば、Windows エクスプローラーで同じ属性で並べ替えられたファイル リストを取得する必要があります。

「作成日」属性でディレクトリを注文すると、次のようなファイル リストが表示されます。

name                    create date    file size
1.txt                   2012/1/1        125Kb
2.tab                   2012/3/2        15Kb
3.bmp                   2013/5/5        26Kb

私のWindowsエクスプローラーが「ファイルサイズ」属性のファイルリストを注文した場合、ファイルリストは次のようになります。

name                     create date    file size
2.tab                    2012/3/2        15Kb
3.bmp                    2013/5/5        26Kb
1.txt                    2012/1/1        125Kb

誰でも助けてもらえますか?

4

7 に答える 7

4

これはあなたが予想するよりもずっと複雑になると思います。フォルダ設定は、レジストリの2つの場所に保存されます。

HKCU\Software\Microsoft\Windows\Shell\BagMRU
HKCU\Software\Microsoft\Windows\Shell\Bags

最初のパスには、ファイルシステムの構造を反映する構造が含まれ、2番目のパスには、そのフォルダーに使用される並べ替え順序を記録する「Sort」と呼ばれるREG_BINARY値など、これらのアイテムに関する詳細が含まれます。

サンプルコード(Python)を含む構造の詳細については、WilliBalenthinのWebサイトを参照してください。

于 2012-08-03T04:41:26.813 に答える
1

Windows エクスプローラーのペインの表示について話していると思います (これは本質的には Windows ファイル マネージャーですが、別の名前でも知られています)。明確化が必要です。カスタムの並べ替えをさまざまな列に適用できます。さらに、複数の表示ペイン (ウィンドウ) を開いて、異なる列で並べ替えることができます。したがって、問題の定義は少し不明確です。

表示ペインでの並べ替え順序を知っていると仮定するSystem.IO.DirectoryInfoと、派生FileSystemInfo[]オブジェクトを使用できます。後者にはfiles.OrderByメソッドがあります。これが役立つことを願っています。私のベスト、アレックス

于 2013-05-07T05:05:50.167 に答える
0

ペイン内の順序(サイズ、名前など)がわからないと思います。リストを読んでから、必要な方法で並べ替えるか、ユーザーに並べ替え属性を選択するように求める必要があります。

Kenny が投稿したSorting Directory.GetFiles()はアプローチですが、とにかく、ユーザーが表示ペインで選択した並べ替え順序を知る方法はないと考えています。

于 2013-05-07T04:52:51.623 に答える
0

列の並べ替えイベントをキャプチャし、そのメタデータを構造化された方法でディスクに書き込む Windows エクスプローラー用のシェル拡張機能を作成する必要があると思います。複数のエクスプローラー ウィンドウが開いている可能性があるため、タイムスタンプまたは ID を適用して、どのエクスプローラー ウィンドウを扱っているかを把握することをお勧めします。次に、アプリでそのメタデータを読み取って並べ替え順序を取得し、それに応じて適用します。簡単ではありませんが、実行可能です。

于 2014-09-23T00:52:31.527 に答える