C# 对目录中的文件名按照数字序号进行排序
一个目录中有如下所示的文件
在读取该目录的文件后,文件名将按照 0、1、11、12、13、14、..........的顺序来进行排列,而不是上图中的顺序进行排列,此时可以通过调用Windows的 Shlwapi.dll 来对读取后的文件进行排序。
1、先创建一个继承自 IComparer 的类,可以将该类的访问属性设置为 public (若设置为私有,则只能在该工程中被使用)
using System;
using System.Collections;
using System.Runtime.InteropServices; // 必须含有该引用
using System.Text;namespace SortByFileName
{public class FileNameSort:IComparer{//调用windos 的 DLL[System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]private static extern int StrCmpLogicalW(string param1, string param2);//前后文件名进行比较。public int Compare(object name1, object name2){if (null == name1 && null == name2){return 0;}if (null == name1){return -1;}if (null == name2){return 1;}return StrCmpLogicalW(name1.ToString(), name2.ToString());}}
}
2、在其它的类中调用该类,对文件名进行排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;namespace SortByFileName
{class Program{static void Main(string[] args){string path = @"E:\Data\Test";DirectoryInfo directoryInfo = new DirectoryInfo(path);FileInfo[] files = directoryInfo.GetFiles("*.txt");Array.Sort(files, new FileNameSort()); // 对获取的文件名进行排序foreach (var theFile in files){Console.WriteLine(theFile);}Console.ReadKey();}}
}
3、排序结果如下图所示
C# 对目录中的文件名按照数字序号进行排序相关推荐
- Python os.walk() 方法--输出在目录中的文件名
概述 os.walk() 方法是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. 语法 ...
- 令数组中的对象根据数字大小进行排序
JavaScript sort() 方法 JavaScript Array 对象 定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数 ...
- mysql 数据库中 ,按照字母加数字的字符串排序
left(c.CODE,1),convert(substr(c.CODE,2,length(c.CODE)-1),SIGNED) https://zhidao.baidu.com/question/1 ...
- 如何使用C或C ++获取目录中的文件列表?
如何从C或C ++代码内部确定目录中的文件列表? 我不允许执行ls命令并从程序中解析结果. #1楼 GNU手册FTW http://www.gnu.org/software/libc/manual/h ...
- 如何在两个目录中删除其中一个目录中同名文件
2019独角兽企业重金招聘Python工程师标准>>> 假设现在有一个目录/mnt/data,还有另外一个目录/opt/data,需要删除/opt/data目录中和/mnt/data ...
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法
Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...
- php获取目录中的所有文件名
<?php/*** [php获取目录中的所有文件名]*///1.先打开要操作的目录,并用一个变量指向它 //打开当前目录下的目录pic下的子目录common.$handler = opendir ...
- VBA中关于WORD的基本应用 比如批量改页眉页脚,从文件名取数字作为页眉等等。
VBA中关于WORD的基本应用 比如批量改页眉页脚,从文件名取数字作为页眉等等. 以下是代码,直接在Word的VBA编辑器里粘贴上去就OK了. Sub 批量转PDF() Dim i As Varian ...
- EXCEL 批量生成sheet表+生成超链接目录+某列按多条件去重罗列+提取单元格中的字母、数字
文章目录 前言 一.EXCEL 公式实现多个条件值匹配 二.EXCEL 工作薄下SHEET表太多时你可以这样做 1.生成多个相同表头的SHEET表 1.1.批量生成SHEET表 1.2.批量更改多个S ...
- linux 触摸屏在dev的那个目录下,各硬件设备在Linux中的文件名
原标题:各硬件设备在Linux中的文件名 选择好你的硬件设备以后,接下来得要了解一下各硬件在Linux当中扮演得角色.再次强调一下:"在Linux系统中,每个设备都被当成一个文件来对峙&qu ...
最新文章
- python核心装饰_Python核心编程 | 装饰器
- 服务器开发的一些框架或者工具收集
- Android 判断当前联网的类型 wifi、移动数据流量
- 麻瓜编程python爬虫微专业_麻瓜编程 - 主页
- 聚类算法(part1)--DBSCAN
- 《计算复杂性:现代方法》——0.2 判定问题/语言
- HDU - 6621 K-th Closest Distance——主席树+二分
- Web安全之权限攻击
- 【转】QT中使用MYSQL中文乱码解决方法
- NSLog 打印出方法函数,行数,内容
- 1424 零树 (树形DP)
- SimpleXML系列函数操作XML
- MySql 表的分区介绍
- 利用密码字典暴力破解渗透目标系统
- 《Java开发实战经典》习题第4章第10题:在排序好的数组中添加一个数字,将添加后的数字插入到数组合适的位置
- 程序员是否要考PMP认证?看这篇就够了
- ps钢笔工具的一些快捷键操作(小白请进)
- BMVC2020 Best Paper: Delving Deeper into Anti-aliasing in ConvNets论文解读
- centos7 wget无法解析主机域名的解决办法
- Java爬虫Jsoup爬取必应壁纸
热门文章
- win7计算机窗口左边被改了,win7电脑开始菜单变成经典模式?三种方法教你改回来...
- CSS 深入理解absolute
- Invisible Backdoor Attack with Sample-Specific Triggers 论文笔记
- Linux系统centos下如何通过命令查看CPU内存存储等硬件信息?
- 控制算法和编程算法_算法中的编程公平性
- 怎么取消linux ssh互信,[系统-linux] ssh互信操作
- 电脑桌面只显示计算机不显示文件夹,如何解决电脑桌面不显示拷贝文件的问题?...
- IE报证书错误提示页面,如何屏蔽?
- Prumo、bp和西门子与SPIC就巴西能源项目达成合作伙伴关系
- anaconda conda环境管理命令