using System;
using System.Collections;
using System.Web;
using System.IO;

namespace UUN
{
    /// <summary>
    /// 资源管理器相关的操作
    /// </summary>
    public class 资源管理器
    {
        private HttpContext HC;
        public 资源管理器(HttpContext HC)
        {
            this.HC=HC;
        }
        /// <summary>
        /// 创建一个新的文件夹
        /// </summary>
        /// <param name="文件夹名称">文件夹名称</param>
        public void 创建文件夹(String 文件夹名称)
        {
            Directory.CreateDirectory(HC.Server.MapPath(程序.安装位置 + 文件夹名称));
        }
        /// <summary>
        /// 更改一个文件夹的名称
        /// </summary>
        /// <param name="文件夹名称">文件夹的所在位置</param>
        /// <param name="新文件夹名称">新的文件夹名称</param>
        public void 更改文件夹名称(String 文件夹名称, String 新文件夹名称)
        {
            new DirectoryInfo(程序.安装位置 + 文件夹名称).MoveTo(程序.安装位置 + 新文件夹名称);
        }
        /// <summary>
        /// 删除一个文件夹
        /// </summary>
        public void 删除文件夹(String 文件夹位置)
        {
            常用.删除文件夹(HC.Server.MapPath(程序.安装位置 + 文件夹位置));
        }
        /// <summary>
        /// 获取文件夹列表
        /// </summary>
        /// <param name="文件夹位置">文件夹的所在位置</param>
        /// <returns>文件夹列表</returns>
        public DirectoryInfo[] 获取文件夹列表(String 文件夹位置)
        {
            DirectoryInfo DI = new DirectoryInfo(HC.Server.MapPath(程序.安装位置 + 文件夹位置));
            return DI.GetDirectories();
        }
        /// <summary>
        /// 获取文件列表
        /// </summary>
        /// <param name="文件夹位置">文件夹的所在位置</param>
        /// <param name="文件格式">允许显示的文件格式</param>
        /// <returns>文件列表</returns>
        public Hashtable 获取文件列表(String 文件夹位置,String 文件格式)
        {
            FileInfo[] 文件数组 = new DirectoryInfo(HC.Server.MapPath(程序.安装位置 + 文件夹位置)).GetFiles();
            Hashtable HT = new Hashtable();
            int i2 = 0;
            for (int i = 0; i < 文件数组.Length; i++)
            {
                FileInfo FI = 文件数组[i];
                bool 是否允许格式 = false;
                String[] 文件格式数组 = 文件格式.Split(',');
                for (int i1 = 0; i1 < 文件格式数组.Length; i1++)
                    if (FI.Name.EndsWith("." + 文件格式数组[i1], StringComparison.OrdinalIgnoreCase))
                    {
                        是否允许格式 = true;
                        break;
                    }
                if (是否允许格式)
                {
                    HT.Add(i2, 文件数组[i]);
                    i2++;
                }
            }
            return HT;
        }
        /// <summary>
        /// 将一个文件上传到服务器
        /// </summary>
        /// <param name="文件夹位置">文件夹的所在位置</param>
        /// <param name="文件">上传的文件</param>
        public void 上传文件(String 文件夹位置,HttpPostedFile 文件)
        {
            String 文件名称 = Path.GetFileName(文件.FileName);
            if (File.Exists(HC.Server.MapPath(程序.安装位置 + 文件夹位置+文件名称)))
            {
                int i=1;
                while (true)
                {
                    if (!File.Exists(HC.Server.MapPath(程序.安装位置 + 文件夹位置 + "f" + i + "_" + 文件名称)))
                        break;
                    i++;
                }
                文件名称 = "f" + i + "_" + 文件名称;
            }
            文件.SaveAs(HC.Server.MapPath(程序.安装位置 + 文件夹位置 + 文件名称));
        }
        /// <summary>
        /// 更改文件的名称
        /// </summary>
        /// <param name="文件名称">原文件的位置</param>
        /// <param name="新文件名称">新文件的位置</param>
        public void 更改文件名称(String 文件名称, String 新文件名称)
        {
            new FileInfo(HC.Server.MapPath(程序.安装位置 + 文件名称))
                .MoveTo(HC.Server.MapPath(程序.安装位置 + 新文件名称));
        }
        /// <summary>
        /// 将服务器的文件删除
        /// </summary>
        /// <param name="文件名称">文件的所在位置</param>
        public void 删除文件(String 文件名称)
        {
            File.Delete(HC.Server.MapPath(程序.安装位置 + 文件名称));
        }
    }
}