首页 / 知识
关于.net:排序Directory.GetFiles()
2023-04-14 18:07:00

Sorting Directory.GetFiles()
更新:MSDN指出,不能保证.Net 3.5的排序顺序,但是该页面的2.0版本完全没有说明任何内容,而且两个页面都无法帮助您按创建或修改时间进行排序。 一旦拥有数组(仅包含字符串),该信息就会丢失。 我可以构建一个比较器,以检查它获取的每个文件,但这意味着在假定.GetFiles()方法已经执行此操作时,将重复访问文件系统。 似乎效率很低。
如果您对文件的属性(例如CreationTime)感兴趣,那么使用System.IO.DirectoryInfo.GetFileSystemInfos()会更有意义。
编辑-抱歉,我没有注意到.NET2.0标签,因此请忽略LINQ排序。虽然仍然保留使用System.IO.DirectoryInfo.GetFileSystemInfos()的建议。 在.NET 2.0中,您需要使用Array.Sort对FileSystemInfos进行排序。 另外,您可以使用Comparer委托来避免只为比较而声明一个类:
这是我使用的VB.Net解决方案。 首先创建一个班级来比较日期:
然后在对数组进行排序时使用比较器:
来自msdn:
Sort()方法是标准的Array.Sort(),它接受IComparables(以及其他重载),因此,如果按创建日期排序,它将根据计算机设置处理本地化。
更加简洁的VB.Net版本...非常好。谢谢。
您可以实现自定义iComparer进行排序。读取文件的文件信息并根据需要进行比较。
msdn info IComparer接口 您是正确的,默认值为我的名字asc。我发现改变排序顺序的唯一方法是从FileInfo集合创建数据表。 然后,您可以使用数据表中的DefaultView并使用.Sort方法对目录进行排序。 这涉及很多并且相当缓慢,但是我希望有人能够发布更好的解决方案。 如果要按创建日期等进行排序,则可能需要使用DirectoryInfo.GetFiles,然后使用合适的谓词对结果数组进行排序。 您可以编写一个自定义IComparer接口以按创建日期排序,然后将其传递给Array.Sort。您可能还想看一下StrCmpLogical,这是资源管理器用于排序的内容(用文本正确地对数字进行排序)。 MSDN文档指出,不能保证返回值的任何顺序。您必须使用Sort()方法。 如果有人有兴趣,可以使用更简洁的VB.Net版本
只是一个主意。我想找到一个简单的出路,然后尝试重新使用已经可用的资源。如果要对文件进行排序,我将只创建一个进程并将syscal设置为" DIR [x: Folders SubFolders *。*] / s / b / on"并捕获输出。 使用系统的DIR命令,您可以按以下方式排序:
如果D =按日期/时间使用LastModifiedDate或FileCreateDate,我不但是,如果所需的排序顺序已经内置在DIR命令中,我将通过调用syscall来获得。而且速度很快。我只是个懒惰的人;) 经过一番谷歌搜索后,我发现切换到按特定日期/时间排序:-
|
最新内容
相关内容
linux命令的返回值?
linux命令的返回值?,系统,工具,位置,管理,暂停,状态,项目,环境,数据,基础,linux文件编程中的right函数当写入失败时返回值为定义函数 int fclolinux默认命令删除?
linux默认命令删除?,系统,软件,名称,档案,命令,文件,目录,不了,电脑,文件夹,关于linux的删除命令1、命令格式:rm [选项] 文件… 命令功能:删除一linuxls命令排序?
linuxls命令排序?,工作,系统,信息,数据,命令,目录,标准,基础,管理,时间,Linux列出当前目录下的文件和目录用什么命令在Linux系统中,使用ls命令linuxrm命令默认?
linuxrm命令默认?,系统,命令,档案,工作,文件,目录,名称,文件夹,选项,子目录,linux如何使用rm命令快速删除文件Linux rmdir命令:删除空目录(空的linux命令默认加后缀?
linux命令默认加后缀?,系统,文件,密码,通用,设备,命令,目录,后缀,表示,程序,linux下如何增加目录下的部分文件.bak后缀??又如何将.bak后缀删除linux排序数字命令?
linux排序数字命令?,标准,数字,单位,情况,系统,信息,命令,文件,顺序,参数,linux下用shell编写,键盘输入三个数,按大小排序输出1、这个问题可以linuxll排序命令?
linuxll排序命令?,系统,信息,地址,标准,工作,命令,时间,数据,文件,目录,Linux列出当前目录下的文件和目录用什么命令1、linux系统下用ls命令列linux默认浏览器命令?
linux默认浏览器命令?,环境,系统,发行,工程,工具,浏览器,软件,情况,网站,管理系统,如何在Linux环境下,使用Java打开默认浏览器退出firefox。删linux命令按大小排序?
linux命令按大小排序?,数字,地址,时间,工作,标准,系统,命令,信息,单位,软件,linuxsort命令列表从大到小排序完如何保存Linux sort命令参数:-b:忽linux计数排序命令?
linux计数排序命令?,标准,命令,情况,工作,文件,系统,数字,管理,目录,内容,Linux文本处理命令的Sort命令sort命令的语法格式:sort[参数][文件]Lilinux默认压缩命令?
linux默认压缩命令?,系统,名称,命令,文件,工具,软件,目录,选项,文件名,格式,linux打包压缩命令tar如图看到的示例,用tar命令来打包这些文件以及linux下排序命令怎么?
linux下排序命令怎么?,本行,命令,代码,数字,位置,单位,标准,文件,参数,文本,linux下uniq和sort命令用法详解,对文本操作时,它一般会和sort命令进