0

だから私は次のコード行を持っています

Dim di As New IO.DirectoryInfo(path)
    Dim diar1 As IO.FileInfo() = di.GetFiles("*." & filetype)

ファイル名に従って要素を事前に配置することは可能ですか?ファイルを整理する方法は、いくつかの番号が間違った順序で表示されることです。私は基本的にファイルがディレクトリにないかどうかを判断するためにこれを求めています。私はこれを、あるファイル名を別のファイル名から差し引くことによって決定しています。ファイル名の例は、1.0001.tif1.0002.tif2.001.tifなどです。ドキュメントID番号と小数を決定する全体がドキュメントのページ番号です

4

1 に答える 1

0

LINQ を使用してファイルを並べ替えることができます。

var tifs = Directory.EnumerateFiles(path, "*.tif", SearchOption.TopDirectoryOnly)
    .Select(fn => new { fn, name = Path.GetFileNameWithoutExtension(fn) })
    .Select(x => new
    {
        x.fn,
        x.name,
        major = int.Parse(x.name.Split('.')[0]),
        minor = int.Parse(x.name.Split('.')[1])
    })
    .OrderBy(x => x.major).ThenBy(x => x.minor);

追加する必要がusing System.Linqあり、これはまだフェイルセーフではないことに注意してください。ファイルは常にこの形式である必要があり、そうでない場合int.Parseはスローされます (を使用できますint.TryParse)。

foreach を使用して結果を列挙できます。

foreach(var x in tifs)
    Console.WriteLine("File:{0}", x.fn);

編集:ただし、diar1.Sort()アルファベット順に並べたい場合は、(私のコメントで述べたように)単純に使用することもできます。

于 2012-10-05T23:02:09.180 に答える