-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

.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 回答
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 回答