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内容转换成目标对象实体集合 /// /// 将XML内容转换成目标对象实体集合 /// /// 目标对象实体 /// 完整文件名(根目录下只需文件名称) /// 主节点名称 /// public static List ConvertXmlToObject(string fileName, string wrapperNodeName) { XmlDocument doc = new XmlDocument(); doc.Load(fileName); List result = new List(); 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 获取基目录 /// /// 获取基目录 /// /// public static string GetBaseDirectory(string path) { try { return AppDomain.CurrentDomain.BaseDirectory + path; } catch (Exception) { return Path.GetFullPath(path); } } #endregion #region 从文件的绝对路径中获取除开文件名以及扩展名的部分 /// /// 从文件路径中获取除开文件名以及扩展名的部分 /// /// 文件的绝对路径 public static string GetFilePathNoExtensionAndFileName(string filePath) { FileInfo fi = new FileInfo(filePath); return fi.DirectoryName; } #endregion #region 创建一个目录 /// /// 创建一个目录 /// /// 目录的绝对路径 public static void CreateDirectory(string directoryPath) { //如果目录不存在则创建该目录 if (!IsExistDirectory(directoryPath)) { Directory.CreateDirectory(directoryPath); } } #endregion #region 检测指定目录是否存在 /// /// 检测指定目录是否存在 /// /// 目录的绝对路径 /// public static bool IsExistDirectory(string directoryPath) { return Directory.Exists(directoryPath); } #endregion #region 检测指定文件是否存在,如果存在返回true /// /// 检测指定文件是否存在,如果存在则返回true。 /// /// 文件的绝对路径 public static bool IsExistFile(string filePath) { return System.IO.File.Exists(filePath); } #endregion #region 删除文件 /// /// 删除文件 /// /// 要删除的文件路径和名称 public static void DeleteFile(string filepath) { if (IsExistFile(filepath)) { System.IO.File.Delete(filepath); } } #endregion #region 移动文件(剪贴--粘贴) /// /// 移动文件(剪贴--粘贴) /// /// 要移动的文件的路径及全名(包括后缀) /// 文件移动到新的位置,并指定新的文件名 public static void MoveFile(string dir1, string dir2) { dir1 = dir1.Replace("/", "\\"); dir2 = dir2.Replace("/", "\\"); if (IsExistFile(dir1)) { File.Move(dir1, dir2); } } #endregion #region 复制文件 /// /// 复制文件 /// /// 要复制的文件的路径已经全名(包括后缀) /// 目标位置,并指定新的文件名 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 } }