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 即可。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C#文件和文件文件夹按时间、名称排序-顺序与倒序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#实现对指定文件夹中文件按修改时间排序
- 下一篇: webapi 获取请求参数