-1

ディレクトリにテキスト ファイルがあります。テキスト ファイルは、そのディレクトリ内で名前順に並べられています。これらのテキスト ファイルのパスを同じ順序 (名前順) で配列に読み込みたい。私は次のコードを使用しています:

string[] textpaths = Directory.GetFiles(filepath + "\\source", "*",    
SearchOption.AllDirectories);  

しかし、取得したパスの配列のディレクトリ順序は同じではありません。誰でも助けてもらえますか?前もって感謝します。

4

6 に答える 6

2

それからそれらを注文してください、大したことは何ですか?

string[] textpaths = Directory.GetFiles(
    filepath + "\\source", 
    "*", 
    SearchOption.AllDirectories
    ).OrderBy(x => x.Name).ToArray();
于 2012-11-14T07:59:41.793 に答える
2

結果の配列を並べ替えるだけです:

IEnumerable<string> textpaths = Directory.GetFiles(
    Path.Combine(filepath, "source"), 
    "*",    
    SearchOption.AllDirectories
    ).OrderBy(f=>f);  

個人的な好みに応じて、次の構文を使用することもできます。

var textPaths = from file in Directory.GetFiles(Path.Combine(filepath, "source"), "*",  SearchOption.AllDirectories)
                order by file
                select file;
于 2012-11-14T08:00:05.293 に答える
1

この順序で、単純な linq クエリを使用していつでもファイルを並べ替えることができます。

string[] textpaths = Directory.GetFiles(filepath + "\\source", "*",    
SearchOption.AllDirectories).OrderBy(x=>x).ToArray();  

または、 DiretoryInfo.GetFilesを使用して、他の属性を使用して並べ替えることができます。

// Sort by full name  
string[] textpaths = new DirectoryInfo("c:\\test").GetFiles("*",    
SearchOption.AllDirectories).OrderBy(x=>x.FullName).Select(x=>x.FullName).ToArray();  

// Sort by creation time  
string[] textpaths = new DirectoryInfo("c:\\test").GetFiles("*",    
SearchOption.AllDirectories).OrderBy(x=>x.CreationTime).Select(x=>x.FullName).ToArray();  
于 2012-11-14T08:07:46.170 に答える
0

試す

string[] textpaths = DirectoryInfo.GetFiles(filepath + "\\source", "*",SearchOption.AllDirectories);  
Array.Sort(textpaths , delegate(FileInfo f1, FileInfo f2) {
return f1.Name.CompareTo(f2.Name);
});
于 2012-11-14T08:01:59.543 に答える
0

.Net は、ファイル マネージャーで適用した並べ替えを使用しません。ただし、ファイルを手動で注文できます。

IEnumerable<string> orderedPaths = textpaths.OrderBy(path => path);

または単一のクエリで:

IEnumerable<string> orderedPaths = 
   Directory.GetFiles(filepath + "\\source", "*", SearchOption.AllDirectories)
            .OrderBy(path => path);
于 2012-11-14T08:00:21.587 に答える
0

その後、linqを使用して配列をソートします

于 2012-11-14T08:00:40.290 に答える