7

番号1、2、3で名前が付けられた画像ファイルを含むフォルダーがあります...
画像ファイル名を1から最後まで順番に読み取るにはどうすればよいですか(番号が何であれ)。

4

4 に答える 4

8

ファイル配列でOrderByを使用できます。

DirectoryInfo dir = new DirectoryInfo(@"C:\yourfolder");
FileInfo[] files = dir.GetFiles();
//User Enumerable.OrderBy to sort the files array and get a new array of sorted files
FileInfo[] sortedFiles = files.OrderBy(r => r.Name).ToArray();

数値(int)名だけのファイル番号については、次を試してください。

FileInfo[] sortedFiles = files
                          .OrderBy(r => int.Parse(Path.GetFileNameWithoutExtension(r.Name)))
                          .ToArray();
于 2012-10-16T04:29:29.163 に答える
2

Habib の答えは正しいですが、番号順に結果が得られないことに注意してください (つまり、2.png を処理する前に 10.png を処理します)。ファイル名をアルファベット順ではなく数値順に並べ替えるには:

foreach (string fileName in Directory.GetFiles(Environment.CurrentDirectory)
         .OrderBy((f) => Int32.Parse(Path.GetFileNameWithoutExtension(f1))))
{
    // do something with filename
}
于 2012-10-16T04:32:26.263 に答える
1

すべてのファイル名を配列に読み込みます。配列要素を昇順で並べ替えます。終わり!

于 2012-10-16T04:28:29.010 に答える
-2

Arraylist を使用してディレクトリ内のすべてのファイル名を収集し、並べ替えます (英数字のファイル名にも適用できます)。

        ArrayList <String> dirFiles=new ArrayList<String>();
        File file = new File("DirectoryPath");

        File createdFile = null;
        String [] str=file.list();
        for(int j=0;j<str.length;j++){
            dirFiles.add(str[j]);               
        }

        CustomComparator comparator = new CustomComparator();
        Collections.sort(dirFiles, comparator);
        for(String fileName: dirFiles){
                 Console.println(fileName);
         }
于 2012-10-16T04:35:31.630 に答える