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
}
}