博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 对目录中的文件名按照数字序号进行排序
阅读量:2145 次
发布时间:2019-04-30

本文共 1637 字,大约阅读时间需要 5 分钟。

一个目录中有如下所示的文件

  

在读取该目录的文件后,文件名将按照 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、排序结果如下图所示

 

 

转载地址:http://ksegf.baihongyu.com/

你可能感兴趣的文章
手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目
查看>>
双向 LSTM
查看>>
GAN 的 keras 实现
查看>>
AI 在 marketing 上的应用
查看>>
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
如何应用 BERT :Bidirectional Encoder Representations from Transformers
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
强化学习第1课:像学自行车一样的强化学习
查看>>
强化学习第2课:强化学习,监督式学习,非监督式学习的区别
查看>>
强化学习第3课:有些问题就像个赌局
查看>>