123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Security.Cryptography;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Xml;
- namespace Common
- {
- public class Utils
- {
- #region 将XML内容转换成目标对象实体集合
- /// <summary>
- /// 将XML内容转换成目标对象实体集合
- /// </summary>
- /// <typeparam name="T">目标对象实体</typeparam>
- /// <param name="fileName">完整文件名(根目录下只需文件名称)</param>
- /// <param name="wrapperNodeName">主节点名称</param>
- /// <returns></returns>
- public static List<T> ConvertXmlToObject<T>(string fileName, string wrapperNodeName)
- {
- XmlDocument doc = new XmlDocument();
- doc.Load(fileName);
- List<T> result = new List<T>();
- Type type = typeof(T);
- XmlNodeList nodeList = doc.ChildNodes;
- if (!string.IsNullOrEmpty(wrapperNodeName))
- {
- foreach (XmlNode node in doc.ChildNodes)
- {
- if (node.Name == wrapperNodeName)
- {
- nodeList = node.ChildNodes;
- break;
- }
- }
- }
- object oneT = null;
- foreach (XmlNode node in nodeList)
- {
- if (node.NodeType == XmlNodeType.Comment || node.NodeType == XmlNodeType.XmlDeclaration) continue;
- oneT = type.Assembly.CreateInstance(type.FullName ?? throw new InvalidOperationException());
- foreach (XmlNode item in node.ChildNodes)
- {
- if (item.NodeType == XmlNodeType.Comment) continue;
- var property = type.GetProperty(item.Name);
- if (property != null)
- property.SetValue(oneT, Convert.ChangeType(item.InnerText, property.PropertyType), null);
- }
- result.Add((T)oneT);
- }
- return result;
- }
- #endregion
- #region 获取基目录
- /// <summary>
- /// 获取基目录
- /// </summary>
- /// <returns></returns>
- public static string GetBaseDirectory(string path)
- {
- try
- {
- return AppDomain.CurrentDomain.BaseDirectory + path;
- }
- catch (Exception)
- {
- return Path.GetFullPath(path);
- }
- }
- #endregion
- #region 从文件的绝对路径中获取除开文件名以及扩展名的部分
- /// <summary>
- /// 从文件路径中获取除开文件名以及扩展名的部分
- /// </summary>
- /// <param name="filePath">文件的绝对路径</param>
- public static string GetFilePathNoExtensionAndFileName(string filePath)
- {
- FileInfo fi = new FileInfo(filePath);
- return fi.DirectoryName;
- }
- #endregion
- #region 创建一个目录
- /// <summary>
- /// 创建一个目录
- /// </summary>
- /// <param name="directoryPath">目录的绝对路径</param>
- public static void CreateDirectory(string directoryPath)
- {
- //如果目录不存在则创建该目录
- if (!IsExistDirectory(directoryPath))
- {
- Directory.CreateDirectory(directoryPath);
- }
- }
- #endregion
- #region 检测指定目录是否存在
- /// <summary>
- /// 检测指定目录是否存在
- /// </summary>
- /// <param name="directoryPath">目录的绝对路径</param>
- /// <returns></returns>
- public static bool IsExistDirectory(string directoryPath)
- {
- return Directory.Exists(directoryPath);
- }
- #endregion
- #region 检测指定文件是否存在,如果存在返回true
- /// <summary>
- /// 检测指定文件是否存在,如果存在则返回true。
- /// </summary>
- /// <param name="filePath">文件的绝对路径</param>
- public static bool IsExistFile(string filePath)
- {
- return System.IO.File.Exists(filePath);
- }
- #endregion
- #region 删除文件
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="filepath">要删除的文件路径和名称</param>
- public static void DeleteFile(string filepath)
- {
- if (IsExistFile(filepath))
- {
- System.IO.File.Delete(filepath);
- }
- }
- #endregion
- #region 移动文件(剪贴--粘贴)
- /// <summary>
- /// 移动文件(剪贴--粘贴)
- /// </summary>
- /// <param name="dir1">要移动的文件的路径及全名(包括后缀)</param>
- /// <param name="dir2">文件移动到新的位置,并指定新的文件名</param>
- public static void MoveFile(string dir1, string dir2)
- {
- dir1 = dir1.Replace("/", "\\");
- dir2 = dir2.Replace("/", "\\");
- if (IsExistFile(dir1))
- {
- File.Move(dir1, dir2);
- }
- }
- #endregion
- #region 复制文件
- /// <summary>
- /// 复制文件
- /// </summary>
- /// <param name="dir1">要复制的文件的路径已经全名(包括后缀)</param>
- /// <param name="dir2">目标位置,并指定新的文件名</param>
- public static void CopyFile(string dir1, string dir2)
- {
- dir1 = dir1.Replace("/", "\\");
- dir2 = dir2.Replace("/", "\\");
- if (IsExistFile(dir1))
- {
- System.IO.File.Copy(dir1, dir2, true);
- }
- }
- #endregion
- }
- }
|