当前位置: 移动技术网 > IT编程>开发语言>c# > DirectInfo.GetFiles返回数组的默认排序示例

DirectInfo.GetFiles返回数组的默认排序示例

2019年07月18日  | 移动技术网IT编程  | 我要评论

复制代码 代码如下:

using system;
using system.collections;
using system.io;

namespace consoleapplication1
{
    /// <summary>
    /// 文件排序类
    /// </summary>
    public class filesort : icomparer
    {
        private fileorder _fileorder;
        private fileasc _fileasc;

        /// <summary>
        /// 构造函数
        /// </summary>
        public filesort()
            : this(fileorder.name, fileasc.asc)
        { }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="fileorder"></param>
        public filesort(fileorder fileorder)
            : this(fileorder, fileasc.asc)
        { }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="fileorder"></param>
        /// <param name="fileasc"></param>
        public filesort(fileorder fileorder, fileasc fileasc)
        {
            _fileorder = fileorder;
            _fileasc = fileasc;
        }

        /// <summary>
        /// 比较函数
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        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;
            }
        }
    }

    /// <summary>
    /// 排序依据
    /// </summary>
    public enum fileorder
    {
        /// <summary>
        /// 文件名
        /// </summary>
        name,
        /// <summary>
        /// 大小
        /// </summary>
        length,
        /// <summary>
        /// 类型
        /// </summary>
        extension,
        /// <summary>
        /// 创建时间
        /// </summary>
        creationtime,
        /// <summary>
        /// 访问时间
        /// </summary>
        lastaccesstime,
        /// <summary>
        /// 修改时间
        /// </summary>
        lastwritetime
    }

    /// <summary>
    /// 升序降序
    /// </summary>
    public enum fileasc
    {
        /// <summary>
        /// 升序
        /// </summary>
        asc,
        /// <summary>
        /// 降序
        /// </summary>
        desc
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网