C# sort files or folders by name, date and creation date in Asc or Desc order

Lionsure 2020-03-01 Original by the website

There are multiple ways to sort files and folders. The most commonly ways are to sort by creation or modification time, and file name. Sort by time and file name is very simple in C#. You can use the method of array Array.Sort() in one line of code. Of course, you can also use common sorts, such as quick sort, bubble sor, and so on.

The file sort is also applicable to folders, but the variables passed are different. For ease of use, four and six common sorts files and folders in C# are listed, respectively: sort by name, time in Asc or Desc order.

 

I, C# sort files

1. C# sort files by name in Asc order

/// <summary>
       /// C# sort files by name in Asc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFileByName(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi1.Name.CompareTo(fi2.Name); });
       }

Call:

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

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

       for (int i = 0; i < arrFi.Length; i++)
                     // Output File Names in Windows Form, rtbFileList is richtextbox control
                     rtbFileList.Text += arrFi[i].Name + Environment.NewLine;
                      //Response.Write(arrFi[i].Name + "<br />");// Output File Names in web page
       }

The above code sorts all files in the root directory of E disk. The code test passes and can be called directly.

 

2. C# sort files by name in Desc order

/// <summary>
       /// C# sort files by name in Desc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFileByName(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi2.Name.CompareTo(fi1.Name); });
       }

The calling method is the same as the above example, so do not give an example.

 

3. C# sort files by creation date in Asc order

/// <summary>
       ///C# sort files by creation date in Asc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFileByCreationTime(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi1.CreationTime.CompareTo(fi2.CreationTime); });
       }

The calling method is the same as above.

 

4. C# sort files by creation date in Desc order

/// <summary>
       ///C# sort files by creation date in Desc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFileByCreationTime(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi2.CreationTime.CompareTo(fi1.CreationTime); });
       }

The calling method is the same as above.

 

5. C# sort files by date in Asc order

/// <summary>
       ///C# sort files by date(LastWriteTime) in Asc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFilesByLastWriteTime(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi1.LastWriteTime.CompareTo(fi2.LastWriteTime); });
       }

The calling method is the same as above.

 

6. C# sort files by date in Desc order

/// <summary>
       ///C# sort files by date(LastWriteTime) in Desc order
       /// </summary>
       /// <param name="arrFi">File array</param>

       private void SortFilesByLastWriteTimeInDesc(ref FileInfo[] arrFi)
       {
              Array.Sort(arrFi, delegate(FileInfo fi1, FileInfo fi2) { return fi2.LastWriteTime.CompareTo(fi1.LastWriteTime); });
       }

The calling method is the same as above.

 

 

II, C# sort folders

1. C# sort folders by name in Asc order

/// <summary>
       /// C# sort folders by name in Asc order
       /// </summary>
       /// <param name="dis">Folder array</param>

       private void SortFoldersByName(ref DirectoryInfo[] dis)
       {
              Array.Sort(dis, delegate(DirectoryInfo fi1, DirectoryInfo fi2) { return fi1.Name.CompareTo(fi2.Name); });
       }

Call:

private void SortFolders()
       {
              string path = "E:\\";
              DirectoryInfo di = new DirectoryInfo(path);

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

       for (int i = 0; i < arrDir.Length; i++)
                     // Output Folder Names in Windows Form, rtbFileList is richtextbox control
                     rtbFileList.Text += arrDir[[i].Name + Environment.NewLine;
                      //Response.Write(arrDir[[i].Name + "<br />");// Output Folder Names in web page
       }

The above code sorts all the folders in the root directory of E disk by name in Asc order, and the code also passes the test in Visual studio 2019.

 

2. C# sort folders by name in Desc order

/// <summary>
       /// C# sort folders by name in Desc order
       /// </summary>
       /// <param name="dis">Folder array</param>

       private void SortFoldersByName(ref DirectoryInfo[] dis)
       {
              Array.Sort(dis, delegate(DirectoryInfo fi1, DirectoryInfo fi2) { return fi2.Name.CompareTo(fi1.Name); });
       }

 

3. C# sort folders by CreationTime in Asc order

/// <summary>
       /// C# sort folders by CreationTime in Asc order
       /// </summary>
       /// <param name="dis">Folder array</param>

       private void SortFoldersByCreationTime(ref DirectoryInfo[] dis)
       {
              Array.Sort(dis, delegate(DirectoryInfo fi1, DirectoryInfo fi2) { return fi1.CreationTime.CompareTo(fi2.CreationTime); });
       }

 

4. C# sort folders by CreationTime in Desc order

/// <summary>
       /// C# sort folders by CreationTime in Desc order
       /// </summary>
       /// <param name="dis">Folder array</param>

       private void SortFoldersByCreationTime(ref DirectoryInfo[] dis)
       {
              Array.Sort(dis, delegate(DirectoryInfo fi1, DirectoryInfo fi2) { return fi2.CreationTime.CompareTo(fi1.CreationTime); });
       }

If you want to sort by the last Write time of folder, the method is the same, you only need to change the CreationTime to LastWriteTime.