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 即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM