C# 在c中读取与目录中的文本文件路径顺序相同的文本文件路径#
我有一个目录中的文本文件。文本文件在该目录中按名称排序。我想将那些顺序相同(按名称)的文本文件的路径读入数组。我正在使用以下代码:C# 在c中读取与目录中的文本文件路径顺序相同的文本文件路径#,c#,c#-4.0,C#,C# 4.0,我有一个目录中的文本文件。文本文件在该目录中按名称排序。我想将那些顺序相同(按名称)的文本文件的路径读入数组。我正在使用以下代码: string[] textpaths = Directory.GetFiles(filepath + "\\source", "*", SearchOption.AllDirectories); 但是我得到的路径数组没有相同的目录顺序。有人能帮忙吗? 提前谢谢 那就点吧,有什么大不了的 string[] textpaths = Directory.Ge
string[] textpaths = Directory.GetFiles(filepath + "\\source", "*",
SearchOption.AllDirectories);
但是我得到的路径数组没有相同的目录顺序。有人能帮忙吗?
提前谢谢 那就点吧,有什么大不了的
string[] textpaths = Directory.GetFiles(
filepath + "\\source",
"*",
SearchOption.AllDirectories
).OrderBy(x => x.Name).ToArray();
只需对结果数组进行排序:
IEnumerable<string> textpaths = Directory.GetFiles(
Path.Combine(filepath, "source"),
"*",
SearchOption.AllDirectories
).OrderBy(f=>f);
.Net不使用您在文件管理器中应用的排序。但您可以手动订购文件:
IEnumerable<string> orderedPaths = textpaths.OrderBy(path => path);
IEnumerable orderedPaths=textpaths.OrderBy(path=>path);
或在单个查询中:
IEnumerable<string> orderedPaths =
Directory.GetFiles(filepath + "\\source", "*", SearchOption.AllDirectories)
.OrderBy(path => path);
IEnumerable OrderedPath=
Directory.GetFiles(filepath+“\\source”、“*”、SearchOption.AllDirectories)
.OrderBy(路径=>path);
之后使用linq对数组排序尝试
string[] textpaths = DirectoryInfo.GetFiles(filepath + "\\source", "*",SearchOption.AllDirectories);
Array.Sort(textpaths , delegate(FileInfo f1, FileInfo f2) {
return f1.Name.CompareTo(f2.Name);
});
您始终可以使用简单的linq查询按哪个顺序对文件进行排序
string[] textpaths = Directory.GetFiles(filepath + "\\source", "*",
SearchOption.AllDirectories).OrderBy(x=>x).ToArray();
或者,您可以使用其他属性对其进行排序
// 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();
不,您不能使用内置函数按名称顺序读取路径。写你自己的…第一个缓冲区比排序哪个顺序,字母顺序??使用按名称排序我相信
Directory.GetFiles
返回字符串,而不是FileInfo
objects数组@somebodyyouknown。我试过你的代码,但是在“名字”下面有一条红线。。为什么?应该是DirectoryInfo。GetFiles@Tilak:精确到DirectoryInfo.GetFiles
不是静态的。这意味着您必须创建一个var di=new DirectoryInfo(wheretolook)代码>在枚举文件之前di.GetFiles(“*”,SearchOption.AllDirectories)
@Qaesar:看看我的评论,我在使用DirectoryInfo@Tilak时得到了正确的代码,我尝试了第一个代码,但对完整路径无效。我将尝试使用DirectoryInfo one..更新的代码。现在检查,将c:\\test替换为您的顶级目录。当其他人给出一行答案时,答案非常无用
// 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();