3

別のフォルダからたくさんのファイルを読みたいです。今、私は自分自身に最も賢い方法は何であるかを自問します。今のところ私は使用しています

    DirectoryInfo directory = new DirectoryInfo(myPath);
    FileInfo[] files = directory.GetFiles("*.txt");

だから私はすべてのファイルのリストを持っていて、それらを繰り返すことができます(それらを1つずつ読んでください)。

大丈夫ですか?リストを並べ替えて、常に最も古いファイルを一番上に表示する方法はありますか。最も古いファイルを読み始め、最後に最新のファイルを読み始めたいので、それはおそらく良い考えです。何か案は?

4

3 に答える 3

6
List<FileInfo> files = directory
    .GetFiles("*.txt")
    .OrderBy(f => f.LastWriteTime)
    .ToList();

注文できるフィールドの包括的なリストについては、FileInfoおよびFileSystemInfoを参照してください。

これがVB.NETの例です

于 2012-07-26T08:23:23.140 に答える
4

ディレクトリからファイルをフェッチして、作成日で並べ替えることができます。

DirectoryInfo info = new DirectoryInfo(myPath);
FileInfo[] files = info.GetFiles("*.txt").OrderBy(f => f.CreationTime).ToArray();

これで、files配列には作成日順にファイルが含まれます。そして、ラムダ式をから変更するOrderByことで、それらを任意の順序で並べ替えることができます。

  • 最終変更時刻まで:OrderBy(f => f.LastWriteTime)
  • 名前で:OrderBy(f => f.Name)

..等々。出力も配列である必要はありません。List<FileInfo>ファイナルToArray()を。に置き換えることで、に変換することもできますToList()

また、逆の順序で並べ替える必要がある場合は、を使用OrderByDescending(...)して目的の結果を得ることができます。

于 2012-07-26T08:29:49.080 に答える
3

コードの後で、これを行います。

FileInfo[] orderedFiles = files.OrderBy(x => x.CreationTime).ToArray();

..またはそれ以上に、そもそもそれらをソートします。

DirectoryInfo directory = new DirectoryInfo(myPath);
FileInfo[] files = directory.GetFiles("*.txt")
                   .OrderBy(x => x.CreationTime).ToArray();
于 2012-07-26T08:28:28.747 に答える