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码排序。可以调整入参的顺序,实现正序和倒序。例子中为倒序。

原文地址:https://www.cnblogs.com/zipon/p/11077266.html

时间: 2024-11-13 08:03:08

C# 模拟windows文件名称排序(使用windows自带dll)的相关文章

linux和windows文件名称长度限制

Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没有优化或改动内核的前提下測试的结果 1. 測试目的:ext3文件系统下filename最大字符长度  測试平台:RHEL5U3_x64  測试过程:LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`touch $LENTH当

文件名称排序

第一次写博客练习下 1 定义个文件比较类 public class FilesNameComparerClass :IComparer<string> { [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCmpLogicalW(string psz1, string psz2); public int Compare(string x, string y)

文件名称排序 字符串序+数字序 python

# -*-coding:utf8-*- """ 基于字符串数字混合排序的Python脚本 """ def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False

java file.listFiles()按文件名称、日期、大小排序

1:按 文件名称 排序是什么规则呢? windows的命名规则是,特殊字符(标点.符号)> 数字 > 字母顺序 > 汉字拼音.首字规则,首字相同看第二个,依次类推… 例如:全是数字的情况,100<200<300 :111<121<131; 111<112<113; 2:按 文件日期 排序是什么规则呢? 按 文件日期 排序分两种: (1)按文件创建日期排序(比较特殊)(2)按文件修改日期排序文件创建日期排序:也就字面意思啦. 文件修改日期排序:按照文件修

无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)

简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此,本文中的“文件”一词可能指文件,也可能指文件夹. 原因 1:文件使用了 ACL 如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件.要解决此问题,请更改该文件上的权限.您可能需要拥有这些文件的所有权才能更改权限. 管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的

Mount实现Linux和Windows文件互相同步

我们前几篇文章介绍了使用SCP.Rsync.Curl等服务实现Linux到windows文件的互相拷贝,而我们今天介绍一个更简单的方法,就是通过mount命令挂载共享目录来实现Linux到windows的文件互传,具体见下: 我们使用的环境为Centos6.4+windows server2012: 因为linux需要挂载windows的共享目录,所以我们首先在windows上也创建一个共享目录 新建 linxushare 然后对于该共享目录我们设置单独的用户及密码进行数据拷贝,这样主要为了安全

Ubuntu和windows文件传输共享

一.使用飞鸽传书实现功能 目前在linux下使用飞鸽传书的比较流行的软件有iptux和ipmsg.  1.1   iptux iptux是ubuntu中一个可以和windows下大家熟悉的飞鸽传书互传文件的软件,在ubuntu软件中心中可以找安装.个人体验还不错,传输速度15M/s左右,(在ubuntu中互传速度能更好)兼容windows下的各种飞鸽传书版 本. 安装iptux比较容易,下载iptux的二进制包http://iptux.googlecode.com/files/iptux_0.4

Windows文件监视器 1.0 绿色版

软件名称:软件名称: Windows文件监视器 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: 176 KB 图片预览: 软件简介: 本程序可以对指定的某个盘符或某个目录进行监视,监视的内容包括任何文件及子文件夹的新建.删除.重命令.大小修改等等,并显示监视的结果 软件下载地址:电信下载 联通下载

Linux 与 Windows 文件互传(VMWare)

虚拟机无桌面的Linux 与 物理机Windows 文件互传有很多种方法,现在先说一种通过共享文件夹的形式,其他方法后续再补充 1.     背景 1)        虚拟机系统:VMWare无桌面的Linux 2)        物理机系统:Win 7 3)        共享文件夹:物理机的D:\Virtual Machines\shared_vm3 要求:实现Linux 与 Windows 文件互传 注意:要通过共享文件夹实现linux与windows文件共享,必须安装 VMWare-to