开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 760|回复: 2
收起左侧

[C#] 如何把下面C代码转为易代码(文件排序的问题)

[复制链接]
结帖率:39% (9/23)
发表于 2024-9-16 19:23:02 | 显示全部楼层 |阅读模式   广东省佛山市
9精币
下面是C#代码,哪位大佬能帮忙转为易代码,且转成文件和文件文件夹按类型排序,谢谢!!
C#文件和文件文件夹按时间、名称排序-顺序与倒序
对于文件和文件夹有多种排序方式,常用的就是按创建或修改时间、按文件名排序。在 C# 中,按时间和文件名排序都十分简单,用数组提供的排序方法 Array.Sort() 一行代码就可以搞定,当然也可以用常用的排序方法,如快速排序、冒泡排序等。

  文件排序的方法也适用于文件夹,只是传递的变量不同。为了便于使用,将分别列出C#文件排序和文件夹排序四种常用方法,分别为:按名称顺序与倒序排序、按时间顺序与倒序。



  一、C#文件排序
  1、按名称顺序排列

  /// <summary>
  /// C#按文件名排序(顺序)
  /// </summary>
  /// <param name="arrFi">待排序数组</param>
  private void SortAsFileName(ref FileInfo[] arrFi)
  {
    Array.Sort(arrFi, delegate(FileInfo x, FileInfo y) { returnx.Name.CompareTo(y.Name); });
  }

  调用方法:

  private void SortFiles()
  {
    string filePath = "E:\\";
    DirectoryInfo di = new DirectoryInfo(filePath);

    FileInfo[] arrFi = di.GetFiles("*.*");
    SortAsFileName(ref arrFi);

    for (int i = 0; i < arrFi.Length; i++)
      Response.Write(arrFi[i].Name + ":<br />");
  }

  上面的代码是对 E 盘根目录下的所有文件排序,代码测试通过,可直接调用。



  2、按名称倒序排列

  /// <summary>
  /// C#按文件名排序(倒序)
  /// </summary>
  /// <param name="arrFi">待排序数组</param>
  private void SortAsFileName(ref FileInfo[] arrFi)
  {
    Array.Sort(arrFi, delegate(FileInfo x, FileInfo y) { returny.Name.CompareTo(x.Name); });
  }

  调用方法跟顺序排列一样,就不举例了。



  3、按创建时间顺序排列

  /// <summary>
  /// C#按创建时间排序(顺序)
  /// </summary>
  /// <param name="arrFi">待排序数组</param>
  private void SortAsFileCreationTime(ref FileInfo[] arrFi)
  {
    Array.Sort(arrFi, delegate(FileInfo x, FileInfo y) { returnx.CreationTime.CompareTo(y.CreationTime); });
  }

  调用方法与上同。



  4、按创建时间倒序排列

  /// <summary>
  /// C#按创建时间排序(倒序)
  /// </summary>
  /// <param name="arrFi">待排序数组</param>
  private void SortAsFileCreationTime(ref FileInfo[] arrFi)
  {
    Array.Sort(arrFi, delegate(FileInfo x, FileInfo y) { returny.CreationTime.CompareTo(x.CreationTime); });
  }

  调用方法与上同。





  二、C#文件夹排序
  1、按文件夹名称顺序排列

  /// <summary>
  /// C#按文件夹名称排序(顺序)
  /// </summary>
  /// <param name="dirs">待排序文件夹数组</param>
  private void SortAsFolderName(ref DirectoryInfo[] dirs)
  {
    Array.Sort(dirs, delegate(DirectoryInfo x, DirectoryInfo y) { returnx.Name.CompareTo(y.Name); });
  }

  调用方法:

  private void FolderSort()
  {
    string filePath = "E:\\";
    DirectoryInfo di = new DirectoryInfo(filePath);

    DirectoryInfo[] arrDir = di.GetDirectories();
    SortAsFolderName(ref arrDir);

    for (int i = 0; i < arrDir.Length; i++)
      Response.Write(arrDir[i].Name + ":<br />");
  }

  上述代码是对 E 盘根目录下的所有文件夹按名称顺序排列,代码也通过 Visual studio 2010 测试。



  2、按文件夹名称倒序排列

  /// <summary>
  /// C#按文件夹名称排序(倒序)
  /// </summary>
  /// <param name="dirs">待排序文件夹数组</param>
  private void SortAsFolderName(ref DirectoryInfo[] dirs)
  {
    Array.Sort(dirs, delegate(DirectoryInfo x, DirectoryInfo y) { returny.Name.CompareTo(x.Name); });
  }



  3、按文件夹创建时间顺序排列

  /// <summary>
  /// C#按文件夹夹创建时间排序(顺序)
  /// </summary>
  /// <param name="dirs">待排序文件夹数组</param>
  private void SortAsFolderCreationTime(ref DirectoryInfo[] dirs)
  {
    Array.Sort(dirs, delegate(DirectoryInfo x, DirectoryInfo y) { returnx.CreationTime.CompareTo(y.CreationTime); });
  }




  4、按文件夹创建时间倒序排列

  /// <summary>
  /// C#按文件夹创建时间排序(倒序)
  /// </summary>
  /// <param name="dirs">待排序文件夹数组</param>
  private void SortAsFolderCreationTime(ref DirectoryInfo[] dirs)
  {
    Array.Sort(dirs, delegate(DirectoryInfo x, DirectoryInfo y) { returny.CreationTime.CompareTo(x.CreationTime); });
  }

  如果要按文件或文件夹的最后修改时间排序,方法也是一样的,只需把 CreationTime 改为 LastWriteTime 即可。


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 15 天

发表于 2024-9-16 19:27:56 | 显示全部楼层   四川省宜宾市
文件名排序
文件_枚举 ("欲寻找的目录[文本型]", "欲寻找的文件名[文本型]", "文件数组[文本型]", "是否带路径[逻辑型]", "是否按字母排序[逻辑型]", "是否遍历子目录[逻辑型]")
目录_枚举子目录 ("父文件夹路径[文本型]", "子目录数组[文本型]", "是否带路径[逻辑型]", "是否按字母排序[逻辑型]")
文件修改时间排序
https://www.eyuyan.la/post/17031.html
回复

使用道具 举报

结帖率:39% (9/23)

签到天数: 25 天

 楼主| 发表于 2024-9-16 19:29:42 | 显示全部楼层   广东省佛山市
发现CMD有SORT排序命令: SORT [/R] [/+n] [/M kilobytes] [/L locale] [/REC recordbytes]    [[drive1:][path1]filename1] [/T [drive2:][path2]]    [/O [drive3:][path3]filename3]    /+n                         指定开始每个比较的字符号码 n。/+3 说明每个                                比较应从每行的第三个字符开始。少于 n 个字符                                的行排在其他行之前。按默认值,从每行的第一                                个字符开始比较。    /L[OCALE] locale            用指定的区域设置替代系统默认区域设置。                                ""C"" 区域设置产生最快的排序顺序并且是当前                                的唯一其他选择。排序总是不分大小写的。    /M[EMORY] kilobytes         指定用于排序的主内存量,单位为 KB。                                最小内存量总是 160 KB。如果指定内存大小,                                无论主内存的可用量是多少,指定的内存量会                                全部用于排序。                                  要取得最佳性能,通常不指定内存大小。按默认                                值,如果达到默认最大内存值,排序会一次完成                                (非临时文件);否则,排序会分两次完成(没有                                完全排序的数据存储在临时文件中);用于排序                                和合并的内存量相等。如果输入和输出都是文                                件,默认最大内存量为可用主内存的 90%;                                否则,为主内存的 45%。    /REC[ORD_MAXIMUM] characters 指定记录中的最大字符数量                                (默认值为 4096,最大值为 65535)。    /R[EVERSE]                  颠倒排序顺序,即,从 Z 到 A,再从 9 到 0。    [drive1:][path1]filename1   指定要排序的文件。如果没有指定,则排序标准                                输入。指定输入文件比将同一个文件重定向为标                                准输入快。    /T[EMPORARY]      [drive2:][path2]          指定保留排序工作存储的目录路径,以防主内                                存无法容纳数据。默认值是使用系统临时目录。    /O[UTPUT]      [drive3:][path3]filename3 指定在哪个文件中储存经过排序的输入。                                如果没有指定,数据会被写入标准输出。指定                                输出文件比将标准输出重定向到同一个文件快。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表