C#如何使用Directory.GetFiles()来获取具有相同的顺序文件在Windows资源管理

2019-06-26 17:32发布

是有可能获得所订购相同的文件在Windows资源管理器

我知道“自然排序”,但它不是我需要什么,我需要通过在Windows资源管理器相同的属性排序文件列表,例如:

如果我下令属性“创建日期”的目录,然后我会得到如下文件列表:

name                    create date    file size
1.txt                   2012/1/1        125Kb
2.tab                   2012/3/2        15Kb
3.bmp                   2013/5/5        26Kb

如果我有属性“文件大小” Windows资源管理器顺序文件列表,该文件列表是:

name                     create date    file size
2.tab                    2012/3/2        15Kb
3.bmp                    2013/5/5        26Kb
1.txt                    2012/1/1        125Kb

谁能帮助吗?

Answer 1:

使用System.Linq的;

DirectoryInfo的信息=新DirectoryInfo的( “”); 。的FileInfo []文件= info.GetFiles()的OrderBy(p值=> p.CreationTime).ToArray(); 的foreach(在文件的FileInfo文件){//做某事}

这里是由创建时获得目录中的文件的示例代码。

您可以通过大小相同的方式获取文件。



Answer 2:

下面是如何得到他们的名字排序的文件列表:

var path = @"C:\windows"; // obviously change this to whatever you want
var files = System.IO.Directory.GetFiles (path).ToList ();
file.Sort();

就是这样!

这里是你会怎么做你每给定的代码示例:

var temperaturePressureSignalFilesList = Directory.GetFiles(TemperaturePressureSignalDirectory, "*.txt", SearchOption.TopDirectoryOnly).ToList();
temperaturePressureSignalFilesList.Sort();


Answer 3:

我认为这将是比预期复杂得多。 文件夹设置存储在注册表中在两个地方:

HKCU\Software\Microsoft\Windows\Shell\BagMRU
HKCU\Software\Microsoft\Windows\Shell\Bags

第一路径包含它反映了文件系统的结构的结构,第二个路径中包含有关这些物品,包括所谓的“排序”一个REG_BINARY值记录用于该文件夹的排序顺序的详细信息。

见威利Balenthin网站的结构细节,包括示例代码(在Python)



Answer 4:

如果你想自然排序顺序,就应该把的P / Invoke StrCmpLogicalW ( http://msdn.microsoft.com/en-us/library/bb759947.aspx ),或者找到一个管理的自然排序算法。 有没有内置的.NET Framework中的自然排序。



Answer 5:

我想,你可以不知道这是在窗格中的顺序(按大小,名称或其他),你必须阅读列表,然后对它进行排序,你所希望的方式或提示用户选择分类属性。

正如肯尼贴排序Directory.GetFiles()这里是一个办法,反正我还在想是没有可能的方式来知道哪个是排序顺序是用户在查看窗格中选择。



Answer 6:

我猜你在谈论Windows资源管理器查看窗格(它本质上是一个Windows文件管理器,但在不同的名字也知道)。 需要澄清。 您可以将您的自定义各种排序的列; 此外,你可以有多个视角窗格(窗口)开放分类上的不同列。 因此,问题的定义是有点不清楚。

假设你在观看窗格知道的排序顺序,那么你可以使用System.IO.DirectoryInfo和派生FileSystemInfo[]对象; 后者具有files.OrderBy方法。 希望这会有所帮助。 我最好的,亚历克斯



Answer 7:

我想你会写的Windows资源管理器捕捉的列排序事件和一些结构化的方式,元数据写入到磁盘外壳扩展。 您可以有多个资源管理器窗口打开,从而可能使你知道哪些浏览器窗口,你正在处理的申请时间戳或ID的想法。 然后在你的应用程序读取元数据获取排序顺序,并据此适用。 并不容易,但可行的。



文章来源: C# How do I use Directory.GetFiles() to get files that have the same order as in Windows explorer?
标签: c# directory