公共文件

来源:互联网 发布:普莉希拉.陈 知乎 编辑:程序博客网 时间:2024/04/20 11:45
 #region 计算两个日期的时间间隔        /// <summary>        /// 计算两个日期的时间间隔        /// </summary>        /// <param name="DateTime1">第一个日期和时间</param>        /// <param name="DateTime2">第二个日期和时间</param>        /// <returns></returns>        public static string DateDiff(DateTime DateTime1, DateTime DateTime2)        {            string dateDiff = null;            TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);            TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);            TimeSpan ts = ts1.Subtract(ts2).Duration();            dateDiff = ts.Days.ToString() + "天"                + ts.Hours.ToString() + "小时"                + ts.Minutes.ToString() + "分钟"                + ts.Seconds.ToString() + "秒"                + ts.TotalMilliseconds.ToString() + "毫秒"                ;            return dateDiff;            //说明:            //    1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻            //    2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值            //    下面的列表涵盖了其中的一部分:            //    Add:与另一个TimeSpan值相加。             //    Days:返回用天数计算的TimeSpan值。             //    Duration:获取TimeSpan的绝对值。             //    Hours:返回用小时计算的TimeSpan值             //    Milliseconds:返回用毫秒计算的TimeSpan值。             //    Minutes:返回用分钟计算的TimeSpan值。             //    Negate:返回当前实例的相反数。             //    Seconds:返回用秒计算的TimeSpan值。             //    Subtract:从中减去另一个TimeSpan值。             //    Ticks:返回TimeSpan值的tick数。             //    TotalDays:返回TimeSpan值表示的天数。             //    TotalHours:返回TimeSpan值表示的小时数。             //    TotalMilliseconds:返回TimeSpan值表示的毫秒数。             //    TotalMinutes:返回TimeSpan值表示的分钟数。             //    TotalSeconds:返回TimeSpan值表示的秒数。         }        #endregion        #region 上传文件方法,需要使和HTML上传控件        /// <summary>        /// 上传文件方法 定义上传文件类型用数组 , 返回结果 如果为TYPE_ERR为类型不正确  如果返回SIZE_ERR为大小不正确 FILE_ERR为文件不正确 /r/n        ///string[] strfiletype = new string[] { "jpg" };/r/n        ///string strResult = string.Empty;/r/n        ///strResult = Public.Upload.UploadFile(Server.MapPath("/updatepath"), 999999, strfiletype, PhotoFile);/r/n        ///if (strResult == "TYPE_ERR")/r/n        ///{/r/n        ///    alert.show(this.Page, "图片格式不正确,请重新选择后再试!");/r/n        ///    return;/r/n        /// }/r/n        /// </summary>        /// <param name="filePath">文件路径</param>        /// <param name="maxSize">文件最大尺寸</param>        /// <param name="fileType">文件类型</param>        /// <param name="TargetFile">上传框</param>        /// <param name="GetImgFileName">上传后的名字</param>                /// <returns></returns>        public static string UploadFile(string filePath, int maxSize, string[] fileType, System.Web.UI.HtmlControls.HtmlInputFile TargetFile, string GetImgFileName)        {            string Result = "UnDefine";            bool typeFlag = false;            string FilePath = filePath;            int MaxSize = maxSize;            string strFileName, strNewName, strFilePath;            if (TargetFile.PostedFile.FileName == "")            {                return "FILE_ERR";            }            strFileName = TargetFile.PostedFile.FileName;            TargetFile.Accept = "*/*";            strFilePath = FilePath;            if (Directory.Exists(strFilePath) == false)            {                Directory.CreateDirectory(strFilePath);            }            FileInfo myInfo = new FileInfo(strFileName);            string strOldName = myInfo.Name;            strNewName = strOldName.Substring(strOldName.LastIndexOf('.') + 1, strOldName.Length - strOldName.LastIndexOf('.') - 1);            strNewName = strNewName.ToLower();            //判断用户上传文件实际类型            if (!GetMIMEByFileType(TargetFile.PostedFile.ContentType))            {                typeFlag = false;                return "TYPE_ERR";            }            else            {                //if (TargetFile.PostedFile.ContentLength <= MaxSize)                //{                    for (int i = 0; i <= fileType.GetUpperBound(0); i++)                    {                        if (strNewName.ToLower() == fileType[i].ToString()) { typeFlag = true; break; }                    }                    if (typeFlag)                    {                        string strFileNameTemp = GetImgFileName;                        string strFilePathTemp = strFilePath;                        strOldName = strFileNameTemp + "." + strNewName;                        strFilePath = strFilePath + strOldName;                        TargetFile.PostedFile.SaveAs(strFilePath);                        Result = strOldName;                        TargetFile.Dispose();                    }                    else                    {                        return "TYPE_ERR";                    }                //}                //else                //{                //    return "SIZE_ERR";                //}            }            return (Result);        }        /// <summary>        /// 根据文件后缀名返回文件的MIME类型        /// </summary>        /// <param name="strfiletype">文件后缀名,没有.</param>        /// <returns>MIME类型</returns>        public static bool GetMIMEByFileType(string strfiletype)        {            switch (strfiletype.ToLower())            {                case "image/gif": return true;                case "image/jpeg": return true;                case "image/pjpeg": return true;                case "image/png": return true;                case "application/x-MS-bmp": return true;                default:                    return false;            }        }        #endregion        #region 返回字符串真实长度, 1个汉字长度为2        /// <summary>        /// 返回字符串真实长度, 1个汉字长度为2        /// </summary>        /// <returns></returns>        public static int GetStringLength(string str)        {            return Encoding.Default.GetBytes(str).Length;        }        #endregion        #region 强随机数方法 2006-10-25 m        /// <summary>        /// 获取随机数方法,可获得指定长度、是否为全数字、全字母、数字加字母形式        /// 当有字母返回时可设置字母全大写、字母全小写、字母大小混合写形式        /// </summary>        /// <param name="len">指定返回随机数长度</param>        /// <param name="mod">        /// 指定返回随机数的类型(0为全数字,1为数字与字母其中字母部分小写,2为数字与字母其中字母部分大写,3为数字与字母其中字母部分大小写混合        /// 4为全小写字母,5为全大写字母,6为全字母且字母大小写混合)        /// </param>        /// <returns>返回随机数字符串</returns>        public static string GetRandNumber(int len, int mod)        {            #region 设置字符返回模式            int isnu = 0;            int ulword = 0;            switch (mod)            {                case 0:                    isnu = 0;                    break;                case 1:                    isnu = 1;                    ulword = 0;                    break;                case 2:                    isnu = 1;                    ulword = 1;                    break;                case 3:                    isnu = 1;                    ulword = 2;                    break;                case 4:                    isnu = 2;                    ulword = 0;                    break;                case 5:                    isnu = 2;                    ulword = 1;                    break;                case 6:                    isnu = 2;                    ulword = 2;                    break;            }            #endregion            RNGCryptoServiceProvider rcsp = new RNGCryptoServiceProvider();            string getcrypt = "";            if (isnu == 0)            {                #region 获得单纯数字的随机数                byte[] Tarray = new byte[len];                rcsp.GetNonZeroBytes(Tarray);                string tstring = "";                for (int i = 0; i < Tarray.Length; i++)                {                    tstring += Tarray[i].ToString();                }                Random rd = new Random();                for (int cnt = 0; cnt < len; cnt++)                {                    getcrypt += tstring.Substring(rd.Next(0, tstring.Length), 1);                }                #endregion            }            else if (isnu == 1)            {                #region 获得数字加字母的随机数                byte[] Tarray = new byte[1];                int tcon = 0;                while (tcon < len)                {                    rcsp.GetNonZeroBytes(Tarray);                    if (((char)Tarray[0] < 91 && (char)Tarray[0] > 64) || ((char)Tarray[0] < 123 && (char)Tarray[0] > 96))                    {                        getcrypt += ((char)Tarray[0]).ToString();                        tcon++;                    }                    else if (((char)Tarray[0] < 58 && (char)Tarray[0] > 47))                    {                        getcrypt += Tarray[0].ToString();                        tcon++;                    }                }                if (ulword == 0)                {                    getcrypt = getcrypt.ToLower();                    getcrypt = getcrypt.Substring(0, len);                }                else if (ulword == 1)                {                    getcrypt = getcrypt.ToUpper();                    getcrypt = getcrypt.Substring(0, len);                }                #endregion            }            else if (isnu == 2)            {                #region 获得字母的随机数                byte[] Tarray = new byte[1];                int tcon = 0;                while (tcon < len)                {                    rcsp.GetNonZeroBytes(Tarray);                    if (((char)Tarray[0] < 91 && (char)Tarray[0] > 64) || ((char)Tarray[0] < 123 && (char)Tarray[0] > 96))                    {                        getcrypt += ((char)Tarray[0]).ToString();                        tcon++;                    }                }                if (ulword == 0)                {                    getcrypt = getcrypt.ToLower();                }                else if (ulword == 1)                {                    getcrypt = getcrypt.ToUpper();                }                #endregion            }            return getcrypt;        }        #endregion        #region 按指定长度截取指定字符串[自动判断半角/全角/符号,已正确返回字符串长度] 2007-02-26 m        public static string returnstring(string rcstring, int sublen)        {            //rcstring = rcstring.Trim().Replace(" ","").Replace(" ","");            if (rcstring.Length < 1)            {                return "";            }            else            {                string rcstr = ToBj(rcstring);                int intsob = 0;                if (sublen >= rcstr.Length)                {                    return rcstr;                }                else                {                    //string strnew = string.Empty;                    //string strnew = rcstr.Substring(0,sublen);                    StringBuilder strnew = new StringBuilder(rcstr.Substring(0, sublen));                    int strnewlength = strnew.Length;                    for (int i = 0; i < strnewlength; i++)                    {                        if (IsBjChar(strnew[i]))                        {                            intsob++;                        }                    }                    if (intsob != 0 && intsob > 1)                    {                        int inti = 0;                        int struns = intsob / 2;                        int strunsis = intsob % 2;                        string tempstri = rcstr.Substring(sublen, rcstr.Length - sublen);                        int cnt = 0;                        int intbom = 0;                        while (inti < struns)                        {                            if (cnt == tempstri.Length)                            {                                break;                            }                            if (IsBjChar(tempstri[cnt]))                            {                                intbom++;                                if (strunsis == 1 && intbom == 1)                                {                                    inti++;                                    strunsis = 0;                                    intbom = 0;                                }                                else if (intbom == 2)                                {                                    inti++;                                    intbom = 0;                                }                            }                            else                            {                                inti++;                            }                            strnew.Append(tempstri[cnt].ToString());                            cnt++;                        }                    }                    if (sublen > 17)                        return strnew.ToString() + "...";                    else                        return strnew.ToString();                }            }            ///如果传入参数为10个长度            ///取当前字符串长度,并取前十个 依次进行循环  如果少几个就取几个        }        /// <summary>        /// 判断字符是否英文半角字符或标点        /// </summary>        /// <remarks>        /// 32       空格        /// 33-47    标点        /// 48-57    0~9        /// 58-64    标点        /// 65-90    A~Z        /// 91-96    标点        /// 97-122    a~z        /// 123-126  标点        /// </remarks>        public static bool IsBjChar(char c)        {            int i = (int)c;            return i >= 32 && i <= 126;        }        /**/        /// <summary>        /// 判断字符是否全角字符或标点        /// </summary>        /// <remarks>        /// <para>全角字符 - 65248 = 半角字符</para>        /// <para>全角空格例外</para>        /// </remarks>        public static bool IsQjChar(char c)        {            if (c == '\u3000') return true;            int i = (int)c - 65248;            if (i < 32) return false;            return IsBjChar((char)i);        }        /**/        /// <summary>        /// 将字符串中的全角字符转换为半角        /// </summary>        public static string ToBj(string s)        {            if (s == null || s.Trim() == string.Empty) return s;            StringBuilder sb = new StringBuilder(s.Length);            for (int i = 0; i < s.Length; i++)            {                if (s[i] == '\u3000')                    sb.Append('\u0020');                else if (IsQjChar(s[i]))                    sb.Append((char)((int)s[i] - 65248));                else                    sb.Append(s[i]);            }            return sb.ToString();        }        #endregion        #region 从字符串的指定位置截取指定长度的子字符串        /// <summary>        /// 从字符串的指定位置截取指定长度的子字符串        /// </summary>        /// <param name="str">原字符串</param>        /// <param name="startIndex">子字符串的起始位置</param>        /// <param name="length">子字符串的长度</param>        /// <returns>子字符串</returns>        public static string CutString(string str, int startIndex, int length)        {            if (startIndex >= 0)            {                if (length < 0)                {                    length = length * -1;                    if (startIndex - length < 0)                    {                        length = startIndex;                        startIndex = 0;                    }                    else                    {                        startIndex = startIndex - length;                    }                }                if (startIndex > str.Length)                {                    return "";                }            }            else            {                if (length < 0)                {                    return "";                }                else                {                    if (length + startIndex > 0)                    {                        length = length + startIndex;                        startIndex = 0;                    }                    else                    {                        return "";                    }                }            }            if (str.Length - startIndex < length)            {                length = str.Length - startIndex;            }            return str.Substring(startIndex, length);        }        #endregion        #region 从字符串的指定位置开始截取到字符串结尾的了符串        /// <summary>        /// 从字符串的指定位置开始截取到字符串结尾的了符串        /// </summary>        /// <param name="str">原字符串</param>        /// <param name="startIndex">子字符串的起始位置</param>        /// <returns>子字符串</returns>        public static string CutString(string str, int startIndex)        {            return CutString(str, startIndex, str.Length);        }        #endregion        #region 输出JS代码        /// <summary>        /// 向用户提示对话框的类        /// </summary>        //public class Alart        //{        /// <summary>        /// 输出模式枚举        /// </summary>        public enum AlartState        {            /// <summary>            /// 在父窗口中打开该连接            /// </summary>            OpenInParentWindow,            /// <summary>            /// 在当前窗口中打开该连接            /// </summary>            OpenInThisWindow,            /// <summary>            /// 返回到上一个页面            /// </summary>            Back,            /// <summary>            /// 关闭窗口            /// </summary>            CloseWindow,            /// <summary>            /// 不做任何操作            /// </summary>            Nothing        }        /// <summary>        /// 输出JS提示信息对话框 WebSite.Components.Public.ShowAlart(Context, "上传文件字节(大小)超过限制!", WebSite.Components.Public.AlartState.Nothing, Request.Url.ToString());        /// </summary>        /// <param name="context">页面Context</param>        /// <param name="Msg">消息内容</param>        /// <param name="Astate">输出模式 * 枚举</param>        /// <param name="ToUrl">提示后要转到的URL</param>        ///        public static void ShowAlart(HttpContext context, string Msg, AlartState Astate, string ToUrl)        {            System.Text.StringBuilder mySB = new System.Text.StringBuilder();            mySB.AppendFormat("<script language='javascript'>alert('{0}');", Msg);            switch (Astate)            {                case AlartState.Back:                    mySB.Append("history.go(-1);");                    break;                case AlartState.CloseWindow:                    mySB.Append("top.window.close();");                    break;                case AlartState.OpenInParentWindow:                    mySB.AppendFormat("top.location = '{0}';", ToUrl);                    break;                case AlartState.OpenInThisWindow:                    mySB.AppendFormat("window.location = '{0}';", ToUrl);                    break;                case AlartState.Nothing:                    break;            }            mySB.Append("</script>");            context.Response.Write(mySB.ToString());        }        //}        #endregion        #region 获得设置配置文件        #region 获取CONFIG中的appSettings指定键名的设置值        /// <summary>        /// 获取CONFIG中的appSettings指定键名的设置值        /// </summary>        /// <param name="configName">键名</param>        /// <returns>键值  返回GET_ERR则获取错误</returns>        public static string GetConfigPar(string configName)        {            try            {                return System.Configuration.ConfigurationManager.AppSettings[configName].ToString();            }            catch            {                return "GET_ERR";            }        }        #endregion        #region 读指定取配置文件        /// <summary>        /// 读Setting.config取配置文件        ///         /// </summary>        /// <param name="Target"></param>        /// <param name="ConfigPathName"></param>        /// <returns></returns>        static internal string GetConfigValue(string Target, string XmlPath)        {            System.Xml.XmlDocument xdoc = new XmlDocument();            xdoc.Load(XmlPath);            XmlElement root = xdoc.DocumentElement;            XmlNodeList elemList = root.GetElementsByTagName(Target);            return elemList[0].InnerXml;        }        #endregion        #region  读Setting.config取配置文件        /// <summary>        /// 读Setting.config取配置文件        /// </summary>        /// <param name="Target"></param>        /// <returns></returns>      public  static  string GetConfigValue(string Target)        {            string path = HttpContext.Current.Server.MapPath(@"~/Setting.config");            return GetConfigValue(Target, path);        }        #endregion        #region 设置CONFIG中的appSettings指定键名的值        /// <summary>        /// 设置CONFIG中的appSettings指定键名的值        /// </summary>        /// <param name="configName">键名</param>        /// <param name="configValue">键值</param>        /// <returns>返回设置结果 SET_ERR则设置失败  SET_SUC则设置成功</returns>        public static string SetConfiParEng(string configName, string configValue)        {            try            {//this.Request.ApplicationPath +                 string file = HttpContext.Current.Server.MapPath(@"~\Web.config");                XmlDocument document = new XmlDocument();                document.Load(file);                XmlNode node = document.SelectSingleNode("//add[@key = '" + configName + "']");                node.Attributes[configName].Value = configValue;                document.Save(file);                return "SET_SUC";            }            catch            {                return "SET_ERR";            }        }        #endregion        #region 设置指定键名及新值        public static void SetConfiPar_E(string appSettingsName, string newValue)        {            string fileName = HttpContext.Current.Server.MapPath(@"~\Web.config");            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(fileName);            XmlNodeList topM = xmlDoc.DocumentElement.ChildNodes;            foreach (XmlElement element in topM)            {                #region 取得目标节点,并赋新值                if (element.Name == "appSettings")                {                    XmlNodeList node = element.ChildNodes;                    if (node.Count > 0)                    {                        foreach (XmlElement el in node)                        {                            if (el.Attributes["key"].Value == appSettingsName)                            {                                el.Attributes["value"].Value = newValue;                                xmlDoc.Save(fileName);                                return;                            }                        }                    }                }                #endregion            }        }        #endregion        #region 设置指定键名及新值        public static void SetConfiPar_3(string appSettingsName, string newValue)        {            string filename = HttpContext.Current.Server.MapPath(@"~\Web.config");            XmlDocument xmldoc = new XmlDocument();            xmldoc.Load(filename);            XmlNodeList topM = xmldoc.DocumentElement.ChildNodes;            foreach (XmlElement element in topM)            {                if (element.Name.ToLower() == "appsettings")                {                    XmlNodeList _node = element.ChildNodes;                    if (_node.Count > 0)                    {                        foreach (XmlElement el in _node)                        {                            if (el.Attributes["key"].InnerXml.ToLower() == appSettingsName.ToLower())                            {                                el.Attributes["value"].Value = newValue;                            }                        }                    }                }            }            xmldoc.Save(filename);        }        #endregion        #region 得到配置文件        public static XmlDocument GetWebConfig()        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(GetXmlFileName());            return xmlDoc;        }        #endregion        #region 得到WEBCONFIG配置文件        public static string GetXmlFileName()        {            //  return HttpContext.Current.Server.MapPath(@"~\Web.config");            return HttpContext.Current.Server.MapPath(@"~\Web.config");        }        #endregion        #region 判断是否存在此节点        /// <summary>        /// 判断是否存在此节点        /// </summary>        /// <param name="strNode"></param>        /// <returns></returns>        public bool IsExistNode(string strNode)        {            XmlDocument xmlDoc = GetWebConfig();            XmlNode xmlNode = xmlDoc.SelectSingleNode(@"/" + strNode);            // retrieve the appSettings xmlNode               xmlNode = xmlDoc.SelectSingleNode("//" + strNode);            return (xmlNode != null);        }        #endregion        #region 判断指定节点名及键值        /// <summary>        /// 判断指定节点名及键值        /// </summary>        /// <param name="strNodeName"></param>        /// <param name="strKey"></param>        /// <returns></returns>        public bool IsExistKey(string strNodeName, string strKey)        {            XmlDocument xmlDoc = GetWebConfig();            bool IsExist = false;            //在当前所有节点中循环查找            XmlNodeList topM = xmlDoc.DocumentElement.ChildNodes;            foreach (XmlElement element in topM)            {                //判定是否存在<appSettings>节点                if (element.Name == strNodeName)                {                    XmlNodeList node = element.ChildNodes;                    //判定是否存在定义的信息                    if (node.Count > 0)                    {                        //在子节点中循环查找                        foreach (XmlElement el in node)                        {                            //判定Key是否等于所需信息Liumm                            IsExist = (el.Attributes["key"].InnerXml == strKey);                            if (IsExist) break;                        }                    }                }            }            return IsExist;        }        #endregion        #region 设置指定键名及值        /// <summary>        /// 设置指定键名及值        /// </summary>        /// <param name="key"></param>        /// <param name="value"></param>        public static void SetConfiPar(string key, string value)        {            XmlDocument xmlDoc = GetWebConfig();            XmlNode xmlNode = xmlDoc.SelectSingleNode(@"/appSettings");            // retrieve the appSettings xmlNode               xmlNode = xmlDoc.SelectSingleNode("//appSettings");            if (xmlNode == null)            {                throw new InvalidOperationException("appSettings section not found");            }            try            {                // XPath select setting "add" element that contains this key                       XmlElement addElem = (XmlElement)xmlNode.SelectSingleNode("//add[@key='" + key + "']");                if (addElem != null)                {                    addElem.SetAttribute("value", value);                }                // not found, so we need to add the element, key and value                   else                {                    XmlElement entry = xmlDoc.CreateElement("add");                    entry.SetAttribute("key", key);                    entry.SetAttribute("value", value);                    xmlNode.AppendChild(entry);                }                //save it                   try                {                    XmlTextWriter writer = new XmlTextWriter(GetXmlFileName(), null);                    writer.Formatting = Formatting.Indented;                    xmlDoc.WriteTo(writer);                    writer.Flush();                    writer.Close();                }                catch (Exception ex)                {                    throw new Exception(ex.Message);                }            }            catch (Exception ex)            {                throw new InvalidOperationException(ex.Message);            }        }        #endregion        #endregion

原创粉丝点击