using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Collections; namespace Stone.Common { /// /// 文件排序类 /// public class MyFileSort : IComparer { private FileOrder _fileorder; private FileAsc _fileasc; /// /// 构造函数 /// public MyFileSort() : this(FileOrder.Name, FileAsc.Asc) { } /// /// 构造函数 /// /// public MyFileSort(FileOrder fileorder) : this(fileorder, FileAsc.Asc) { } /// /// 构造函数 /// /// /// public MyFileSort(FileOrder fileorder, FileAsc fileasc) { _fileorder = fileorder; _fileasc = fileasc; } /// /// 比较函数 /// /// /// /// public int Compare(object x, object y) { FileInfo file1 = x as FileInfo; FileInfo file2 = y as FileInfo; FileInfo file3; if (file1 == null || file2 == null) throw new ArgumentException("参数不是FileInfo类实例."); if (_fileasc == FileAsc.Desc) { file3 = file1; file1 = file2; file2 = file3; } switch (_fileorder) { case FileOrder.Name: return file1.Name.CompareTo(file2.Name); case FileOrder.Length: return file1.Length.CompareTo(file2.Length); case FileOrder.Extension: return file1.Extension.CompareTo(file2.Extension); case FileOrder.CreationTime: return file1.CreationTime.CompareTo(file2.CreationTime); case FileOrder.LastAccessTime: return file1.LastAccessTime.CompareTo(file2.LastAccessTime); case FileOrder.LastWriteTime: return file1.LastWriteTime.CompareTo(file2.LastWriteTime); default: return 0; } } } /// /// 排序依据 /// public enum FileOrder { /// /// 文件名 /// Name, /// /// 大小 /// Length, /// /// 类型 /// Extension, /// /// 创建时间 /// CreationTime, /// /// 访问时间 /// LastAccessTime, /// /// 修改时间 /// LastWriteTime } /// /// 升序降序 /// public enum FileAsc { /// /// 升序 /// Asc, /// /// 降序 /// Desc } }