CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

使用Directory.GetFiles,如何按文件名分别进行升序或降序排序?请帮帮我,谢谢。

楼主wtoeb(FAQC.COM)2005-06-15 22:43:52 在 .NET技术 / C# 提问

使用Directory.GetFiles,如何按文件名分别进行升序或降序排序?  
  string[]   files=Directory.GetFiles(@Server.MapPath("./upload/"));  
  我得到的结果并不是按汉语拼音排列的,也无法按升序或降序排列。  
  请帮帮我,谢谢。 问题点数:50、回复次数:10Top

1 楼wtoeb(FAQC.COM)回复于 2005-06-15 22:45:24 得分 0

例子可见:www.loveshe.com。  
  左边最新的列表是按文件建立的时间来排序的。  
  中间这个没有进行排序处理。  
  谢谢。Top

2 楼saucer(思归)回复于 2005-06-15 22:50:13 得分 45

write   a   IComparer,   for   example  
   
   
  using   System;  
  using   System.Collections;  
  using   System.IO;  
   
  class   SortFile   :   IComparer    
  {  
      int   IComparer.Compare(object   a,   object   b)  
      {  
  FileInfo   fa   =   (FileInfo)a;  
  FileInfo   fb   =   (FileInfo)b;  
   
  //order   by   LastWriteTime   DESC  
  if   (fa.LastWriteTime   <   fb.LastWriteTime)  
  return   1;  
  if   (fa.LastWriteTime   >   fb.LastWriteTime)  
  return   -1;  
   
  return   0;  
      }  
   
      public   static   void   Main()  
      {  
      string   sDir   =   @"d:\labs\aspnet";  
    DirectoryInfo   di   =   new   DirectoryInfo(sDir);  
  FileInfo[]   fis   =   di.GetFiles();  
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.LastWriteTime);  
   
  Array.Sort(fis,   new   SortFile());  
   
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.LastWriteTime);  
   
      }  
  }Top

3 楼wtoeb(FAQC.COM)回复于 2005-06-15 23:00:00 得分 0

saucer(思归):  
  大哥,我是想分别用:  
  1、按文件名来进行升序或降序排列(未解决);  
  2、按扩展名来进行升序或降序排列(未解决);  
  3、按创建时间来进行升序或降序排列(已解决)。  
  谢谢。Top

4 楼saucer(思归)回复于 2005-06-15 23:14:38 得分 0

using   System;  
  using   System.Collections;  
  using   System.IO;  
   
  public   enum   SortOption  
  {  
        FileName,  
        Extension,  
        CreationTime  
  }  
   
  class   SortFile   :   IComparer    
  {  
      SortOption   mso;  
      public   SortFile(SortOption   so)  
      {  
  mso   =   so;  
      }  
   
      int   IComparer.Compare(object   a,   object   b)  
      {  
  FileInfo   fa   =   (FileInfo)a;  
  FileInfo   fb   =   (FileInfo)b;  
   
   
  switch   (mso)  
  {  
      case   SortOption.FileName:  
  return   String.Compare(fa.Name,   fb.Name,   true);  
  break;  
      case   SortOption.Extension:  
  return   String.Compare(Path.GetExtension(fa.Name),   Path.GetExtension(fb.Name),   true);  
  break;  
      case   SortOption.CreationTime:  
  return   DateTime.Compare(fa.CreationTime,   fb.CreationTime);  
  break;  
      default:  
   
  break;  
  }  
   
  return   0;  
      }  
   
      public   static   void   Main()  
      {  
      string   sDir   =   @"e:\labs\csdn";  
    DirectoryInfo   di   =   new   DirectoryInfo(sDir);  
  FileInfo[]   fis   =   di.GetFiles();  
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.CreationTime);  
   
  Array.Sort(fis,   new   SortFile(SortOption.FileName));  
   
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.CreationTime);  
   
   
  Array.Sort(fis,   new   SortFile(SortOption.Extension));  
   
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.CreationTime);  
   
   
  Array.Sort(fis,   new   SortFile(SortOption.CreationTime));  
   
  foreach   (FileInfo   fi   in   fis)  
  Console.WriteLine("{0},   {1}",   fi.Name,   fi.CreationTime);  
   
      }  
  }  
  Top

5 楼wtoeb(FAQC.COM)回复于 2005-06-16 00:05:17 得分 0

不好意思,搞了半天,不知道怎么转成WEB的。Top

6 楼wtoeb(FAQC.COM)回复于 2005-06-16 00:20:20 得分 0

提示信息如下:  
   
  指定的转换无效。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.InvalidCastException:   指定的转换无效。  
   
  源错误:    
   
   
  行   153: int   IComparer.Compare(object   a,   object   b)  
  行   154: {  
  行   155: FileInfo   fa   =   (FileInfo)a;  
  行   156: FileInfo   fb   =   (FileInfo)b;  
  行   157: switch   (mso)  
     
  Top

7 楼wtoeb(FAQC.COM)回复于 2005-06-16 00:26:14 得分 0

我的代码如下,思归大哥,帮帮看看有什么问题?谢谢。  
   
  string[]   files=Directory.GetFiles(@Server.MapPath("./upload/"));  
  Array.Sort(files,   new   SortFile(SortOption.FileName));  
  for(int   i=0;i<files.Length;i++)  
  {  
          ……  
  }  
  public   class   SortFile   :   IComparer  
  {  
      SortOption   mso;  
      public   SortFile(SortOption   so)  
      {  
  mso   =   so;  
      }  
      int   IComparer.Compare(object   a,   object   b)  
      {  
  FileInfo   fa   =   (FileInfo)a;  
  FileInfo   fb   =   (FileInfo)b;  
  switch   (mso)  
  {  
  case   SortOption.FileName:  
  return   String.Compare(fa.Name,   fb.Name,   true);  
  //break;  
  case   SortOption.Extension:  
  return   String.Compare(Path.GetExtension(fa.Name),   Path.GetExtension(fb.Name),   true);  
  //break;  
  case   SortOption.CreationTime:  
  return   DateTime.Compare(fa.CreationTime,   fb.CreationTime);  
  //break;  
  default:  
  break;  
  }  
  return   0;  
      }  
  }  
  public   enum   SortOption  
  {  
  FileName,  
  Extension,  
  CreationTime  
  }  
  红色的错误提示落在:FileInfo   fa   =   (FileInfo)a;这一行。  
  谢谢。Top

8 楼upto(阿球|Mobile Smart Client)回复于 2005-06-16 00:32:08 得分 5

楼主,你要用   DirectoryInfo   类来获取文件的   FileInfo   数组,不要直接用   Directory   的静态方法获取文件名数组。Top

9 楼upto(阿球|Mobile Smart Client)回复于 2005-06-16 00:32:37 得分 0

上面的转换无效,应该就是   string   ->   FileInfo   转换无效。Top

10 楼wtoeb(FAQC.COM)回复于 2005-06-16 00:44:50 得分 0

upto(阿球|Smart   Client   with   EntLib)  
  谢谢您,成了。现在想要做一个分页,又是很麻烦的哦。  
  谢谢。Top

相关问题

  • 自动升序降序问题
  • 降序排列 和升序排列
  • 如何实现 listview 中的升序与降序排序
  • 怎样实现降序和升序用SQL。
  • 疑难问题,升序,降序不一样
  • jsp页面按升序或者降序排序。
  • SQL如何先按日期降序,在按类型升序,在按标题升序排序???(谢谢)
  • 请问怎么把数组元素的下标由升序到降序??
  • 怎么能获取dataGrid某一列的排序状态(升序还是降序)?
  • 这里得到的结果如何按升序或降序排列结果?

关键词

  • 文件名
  • 排序
  • 排列
  • 转换
  • sortoption
  • fileinfo
  • fi
  • sortfile
  • creationtime
  • 谢谢

得分解答快速导航

  • 帖主:wtoeb
  • saucer
  • upto

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo