pro*_*eek 32 c# sorting getfiles
我有这个代码列出目录中的所有文件.
class GetTypesProfiler
{
static List<Data> Test()
{
List<Data> dataList = new List<Data>();
string folder = @"DIRECTORY";
Console.Write("------------------------------------------\n");
var files = Directory.GetFiles(folder, "*.dll");
Stopwatch sw;
foreach (var file in files)
{
string fileName = Path.GetFileName(file);
var fileinfo = new FileInfo(file);
long fileSize = fileinfo.Length;
Console.WriteLine("{0}/{1}", fileName, fileSize);
}
return dataList;
}
static void Main()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我需要根据文件大小或字母顺序打印出文件信息.如何从Directory.GetFiles()中对结果进行排序?
Jon*_*Jon 62
LINQ非常简单.
按名称排序
var sorted = Directory.GetFiles(".").OrderBy(f => f);
Run Code Online (Sandbox Code Playgroud)
按大小排序
var sorted = Directory.GetFiles(".").OrderBy(f => new FileInfo(f).Length);
Run Code Online (Sandbox Code Playgroud)
按日期排序:(返回FileInfo的可枚举):
Directory.GetFiles(folder, "*.dll").Select(fn => new FileInfo(fn)).
OrderBy(f => f.Length);
Run Code Online (Sandbox Code Playgroud)
或者,按名称订购:
Directory.GetFiles(folder, "*.dll").Select(fn => new FileInfo(fn)).
OrderBy(f => f.Name);
Run Code Online (Sandbox Code Playgroud)
制作FileInfo情况下是没有必要的按文件名排序,但如果你想要应用不同的排序方法的飞行,最好有你的阵列FileInfo到位对象,然后只是OrderBy他们通过Length或Name财产,因此此实现.此外,看起来你FileInfo无论如何都会创建,所以最好还是拥有一个FileInfo对象集合.
对不起我第一次没弄错,应该更仔细地阅读问题和文档.
如果您愿意,可以在FileInfo对象上使用LINQ:
var orderedFiles = Directory.GetFiles("").Select(f=> new FileInfo(f)).OrderBy(f=> f.CreationTime)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72719 次 |
| 最近记录: |