如何对出现在硬盘上的目录进行排序?

2023-12-01

在我的硬盘上,例如:

目录1 目录2 目录3 目录4 ……

我的代码是:

DirectoryInfo dInfo = new DirectoryInfo(AutomaticsubDirectoryName);
DirectoryInfo[] subdirs = dInfo.GetDirectories();

so in subdirs我获取了所有目录,但它们的顺序与硬盘上的顺序不同。 我怎样才能对它们进行排序,以便它们出现在subdirs它们在我的硬盘上的顺序相同吗?


解决了这个问题:

DirectoryInfo[] subdirs = dInfo.GetDirectories().OrderBy(d =>
                    {
                        int i = 0;
                        if (d.Name.Contains("Lightning ") && d.Name.Contains(" Length") && d.Name.IndexOf("Lightning ") < d.Name.IndexOf(" Length"))
                        {
                            string z = d.Name.Substring(("Lightning ").Length);
                            string f = z.Substring(0, z.IndexOf(" Length"));
                            if (Int32.TryParse(f, out i))
                                return i;
                            else
                                return -1;
                        }
                        else
                            return -1;
                    }).ToArray();

工作完美。


Windows使用的字符串比较函数暴露给大家使用。因此,您需要一点点 pinvoke 才能获得与 Explorer 使用的完全相同的排序顺序。将其包装在 IComparer 中,以便您可以将其传递给 Array.Sort() 或 OrderBy() Linq 子句:

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public class LogicalComparer : IComparer<string> {
    public int Compare(string x, string y) {
        return StrCmpLogicalW(x, y);
    }
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    private static extern int StrCmpLogicalW(string s1, string s2);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对出现在硬盘上的目录进行排序? 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 在 Scrapy 蜘蛛中动态添加 allowed_domains

    我有一个蜘蛛 它以一小部分列表开头allowed domains在蜘蛛爬行的开始 当蜘蛛抓取从解析器内继续时 我需要动态地将更多域添加到此白名单中 但由于后续请求仍在过滤中 因此以下代码段无法完成此操作 还有更新的吗allowed doma
  • 如何从引用网址获取 location.hashtag - Google Analytics

    有一个网站在其网址中使用页面按钮和主题标签 来操纵其内容 链接 的排序方式 他们链接到我的网站 我想知道人们在最终找到我的网站并点击之前点击了哪些按钮 例如 引用网址如下所示 http www example com page1 conte
  • 使用 JQuery 查找并计算选中框的数量

    我在一页上有一个表单 在该表单中 表中的每一行都有一个复选框 我需要计算已选中行的行数 但我什至从 jQuery 中选择它都遇到了麻烦 这是我的复选框代码的样子
  • 红黑高斯赛德尔和 OpenMP

    我试图证明 OpenMP 与 MPICH 相比的一点 并且我编写了以下示例来演示在 OpenMP 中实现高性能是多么容易 Gauss Seidel 迭代被分成两个单独的运行 以便在每次扫描中每个操作都可以按任何顺序执行 并且每个任务之间不应
  • ProxyPass 和 ProxyPassReverse 可以在 htaccess 中工作吗?

    我以前从未设置过代理 我使用的是共享托管 因此要设置 Apache 指令 我需要使用 htaccess 我可以使用 htaccess 执行如下操作吗 有什么限制吗 ProxyRequests Off ProxyPass img http i
  • 从 PHP 获取 CSS 样式

    我正在使用简单 DOM 解析器解析页面 它很简洁 但我想为每个元素获取应用的 css 样式 不仅是内联样式 还包括应用于该元素的每种样式 无论是内联样式 页内样式还是外部样式 有没有一个类可以做到这一点 如果没有 你会怎么做 我并不真正关心
  • 使用 .htaccess 重写查询字符串中的变量

    我在网站中使用 PHP 脚本 该脚本在 URL 中生成查询字符串 查询字符串中的变量之一是 colour red 我想在我的 htaccess 文件中制定一条规则 重写所有实例colour red to colour blue 我无权更改原
  • JQuery:返回上一页时如何返回到完全相同的滚动位置

    我有一个很长的项目列表 当我单击每个项目并返回主列表时 滚动位置丢失了 如何使用 jQuery 返回到相同的精确滚动位置 有什么简单的方法可以做到吗 document ready function update button click f
  • 包含 QML 中的对象的 QAbstractListModel 有哪些缺点?

    Qt 提供了将 C 模型与 QML 相结合的可能性并在文档中建议了三种方法 QStringList QObjectList QAbstractItemModel 前两者使用起来非常简单 例如QObjectList in C QList
  • 获取每天创建的条目数

    假设我有一个这样的搜索查询 SELECT COUNT id date created at FROM entries WHERE date created at gt date current date interval 1 week GR
  • 使用 WebView android 读取 Gif 图像

    当我尝试使用 Android 2 3 3 API 10 中的 WebView 读取 gif 图像时 它不是动画的 它显示为静态的 我该如何解决这个问题 有什么我必须更改的设置吗 Activity Main xml
  • Python 中的命名反向引用 (?P=name) 问题

    我在学习 re Python 的一部分 以及命名模式 P name 使我困惑 当我使用re sub 为了对数字和字符进行一些交换 模式 P name 不起作用 但模式 N and g
  • 有条件终止 SAS

    如果满足特定条件 我试图停止 SAS 程序的处理 我创建了一个宏变量 如果该变量 gt 0 5 那么我想要硬停止程序 当前程序看起来像 data a1 set Server a2 run macro1 a1 macro2 t1 t1 gen
  • 实体表不是使用 JPA 2.1 创建的

    我在 Netbeans 中使用 JPA 2 1 来创建我的实体 如果我的数据库没有表 那么它应该从实体创建表 当我部署并运行企业应用程序时 userEntity 表不会出现在我的 mySQL 数据库中 这里有什么帮助吗 下面是我的代码 持久
  • 关于等待超时错误的自定义消息

    我有时会使用 预期条件 功能量角器 1 7 中引入 Use case var EC protractor ExpectedConditions browser wait EC visibilityOf header displayName
  • Excel 2010 64 位无法创建 .net 对象

    我有一个在 Excel 中使用的简单类库 这是我的课程的简化 using System using System Runtime InteropServices namespace SimpleLibrary ComVisible true
  • 有什么方法可以暂停 firestore 侦听器而不删除它?

    有什么方法可以暂停 firestore 侦听器而不删除它 我有多个 Firebase 侦听器 其中一些侦听器依赖于其他侦听器 这些侦听器会在数据更改时更改或启动其他侦听器 假设我的第一个监听器启动了第二个监听器onSnapshot 第一个听
  • 重载指向两个不同类的指针的赋值运算符

    我的问题 我正在尝试重载指向两个不同类的指针的赋值运算符 这是一个例子 dc h ifndef DC H define DC H include ic h class dc double d char c public dc d 0 c 0
  • 一段时间后 AKFFTTap 停止生成数据

    我将 AudioKit 用于录音机应用程序 并向 AKMicrophone 添加了 AKFFTTap 以绘制自定义音频波形 这一切都运行良好 但是经过几次录音后 或者在应用程序录音屏幕打开一段时间后 FFT 数据突然变成全 0 我知道麦克风
  • 如何对出现在硬盘上的目录进行排序?

    在我的硬盘上 例如 目录1 目录2 目录3 目录4 我的代码是 DirectoryInfo dInfo new DirectoryInfo AutomaticsubDirectoryName DirectoryInfo subdirs dI