zoukankan      html  css  js  c++  java
  • C# 模拟windows文件名称排序(使用windows自带dll)

            [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
            private static extern int StrCmpLogicalW(string psz1, string psz2);
            /// <summary>
            /// 根据路径查到文件,按文件名称排序,智能排序,非ASCII码排序
            /// </summary>
            /// <param name="pathToVersions"></param>
            /// <returns></returns>
            private static string[] GetFileListByPath(string pathToVersions)
            {
                var files = new DirectoryInfo(pathToVersions).GetFiles();
                var list = files.ToList();
                //根据修改时间排序,因为复制会改变创建时间,不会改变修改时间
                //list.Sort((a, b) => b.LastWriteTime.CompareTo(a.LastWriteTime));
                //list.Sort((a, b) => b.FullName.CompareTo(a.FullName));
                //list = files.OrderBy(s => int.Parse(Regex.Match(Regex.Match(s.Name, @"d+.7z").Value,@"d+").Value)).ToList();
                //按windows的名称排序,abc_1.0.12.zip、abc_1.0.2.zip、abc_1.0.1.zip
                list.Sort((a, b) => StrCmpLogicalW(b.Name,a.Name));
                return list.Select(d => d.FullName.Replace(pathToVersions + @"", "")).ToArray();
            }
    按windows的文件名称排序,abc_1.0.12.zip、abc_1.0.2.zip、abc_1.0.1.zip,非ASCII码排序。可以调整入参的顺序,实现正序和倒序。例子中为倒序。
  • 相关阅读:
    适用于小白的 python 快速入门教程
    Centos7.x & RedHat7.x系统忘记 root 密码解决办法
    让我来教你如何免费使用RHEL小红帽系统
    10#Windows注册表的那些事儿
    9#搭建网站
    8#继承和多态
    7#Java基本语句语法
    6#day2总结
    5#关于数据数值的转换
    .NET Core开发日志——配置
  • 原文地址:https://www.cnblogs.com/zipon/p/11077266.html
Copyright © 2011-2022 走看看