マシン上のすべてのディレクトリとファイルを一覧表示してサイズに並べ替えようとしています。 ファイル名とそのサイズの一覧が表示されますが、順番どおりに表示されません。乾杯ディレクトリとファイルをサイズ順で表示するC#
//create instance of drive which contains files
DriveInfo di = new DriveInfo(@"C:\");
//find the root directory path
DirectoryInfo dirInfo = di.RootDirectory;
try
{
//EnumerateFiles increases the performance and sort them
foreach (var fi in dirInfo.EnumerateFiles().OrderBy(f =>f.Length).ToList())
{
try
{
//Display each file
Console.WriteLine("{0}\t\t{1}", fi.FullName, fi.Length);
}
catch (UnauthorizedAccessException UnAuthTop)
{
Console.WriteLine("{0}", UnAuthTop.Message);
}
}
'ToList'は不要です(列挙する前にコレクション全体を強制的に強制することによるパフォーマンスの低下や、与えられたコードを与えられたネストされた' try-catch')コレクションがソートされないようにする問題があります。それが何を生産しているのか、それはあなたが期待しているものとどのように違うのですか? – Abion47
Yeh私はもともとToListメソッドなしでそれを持っていたが、それは同じ結果を与えた...それは私にファイルの完全なリストを与えるが、サイズの順序ではない...しかし、同じフォルダ内の他のすべてのファイル私は考えている – user7553219
コードは、FileInfo.Lengthプロパティの値が変更されないことを前提としています。ファイルの長さは変更され、プロセスがファイルに書き込むときに発生します。どのように有害であるかが私には完全にはっきりと分かりません.FileInfo内部でキャッシュが行われていますが、ソートするとかなり危険です。 –