2016-09-08 14 views
0

リモートの大西洋横断のSamba共有からファイルのリストを取得するプロセスがあります。これは自然に遅いですが、ファイル名が必要なだけでなく、最新の書き込み時間が必要です。ディレクトリにはたくさんのファイルがあります。私が知る限り、.NETファイルAPIはそれぞれのファイルを個別に要求しています。必要な情報を迅速に入手する方法はありますか?バッチで完全なディレクトリ情報を取得する方法

+0

次のようにしてください:DirectoryInfo info = new DirectoryInfo( "path"); (x => x.Key、y => y.FirstOrDefault()); 辞書 dict = info.EnumerateFiles()。GroupBy(x => x.FullName、y => y.L​​astWriteTime) ; – jdweng

答えて

0

私は自分自身の方法を見つけるのが大好きです。私はまったく同じ問題を抱えています。ネットワークの場所が遅いため膨大な数のファイルがあり、変更をスキャンする必要があります。

私が知る限り、ファイルのプロパティを1つずつ尋ねる必要があります。

ファイルごとに転送される情報の量は、高くするべきではありません。ラウンドアバウトの要求 - 応答時間がおそらく主な問題です。複数のリクエストを並行して実行して状況を助けることができます(例:Parallel.ForEachを使用)

1

質問に対する回答は、少なくとも意味のある方法ではないでしょう。

コード内のファイルを正確に列挙する方法は、Windowsの同じファイルシステムAPIを使用するため、ほとんど無関係です。残念ながら、1回の呼び出しでファイルの詳細のリストを返す関数はありません。

あなたのコードがどのようなものであっても、下のどこかでも、ディレクトリの内容が列挙されていて、ファイルごとに特定のファイル機能が個別に呼び出されています。

これは実際に問題がある場合は、検出ロジックをファイルに近づけて、アプリケーションに定期的に結果を送信します。

*免責事項:私はこの記事をスタックに入れてしまったので、今はAPIのドキュメントを閲覧しているので、ちょっとしたことがあります。

+0

もう少し調べてみると、Win32レベルにドロップすると、列挙と同時に情報を取り出すことができますが、これははるかに高速ですが、方法1で単なる操作を実行するだけのものは見つかりません探していた私はWin32の設計時に、大西洋横断のサンバドライブについて実際には考えていないと思います。 –

関連する問題