using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data.Common; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Sockets; using System.Net; using System.Reflection; namespace DataLoader.CS { /// /// 工具类 /// public class Tools { /// /// 基础目录 /// public static readonly string BaseDir = AppDomain.CurrentDomain.BaseDirectory; private static PostgreHelper _dbHelper; /// /// DB帮助类 /// public static PostgreHelper DBHelper { get { if (null == _dbHelper) { _dbHelper = new PostgreHelper(); } return _dbHelper; } } /// /// 字节格式化 /// public static string FormatBytes(long bytes) { string[] Suffix = { "B", "KB", "MB", "GB", "TB" }; // Byte int i = 0; double dblSByte = bytes; if (bytes > 1024) for (i = 0; (bytes / 1024) > 0; i++, bytes /= 1024) dblSByte = bytes / 1024.0; return string.Format("{0:0.##} {1}", dblSByte, Suffix[i]); } /// /// 换算为MB /// public static double SizeToMb(long size) { if (size < 1050) { return 0.001; } string str = string.Format("{0:F3}", size / 1024.0 / 1024.0); return double.Parse(str); } /// /// 保留3位小数 /// public static double Round3(double val) { string str = string.Format("{0:F3}", val); return double.Parse(str); } /// /// 获取设置 /// public static string GetSetting(string key) { if (!ConfigurationManager.AppSettings.AllKeys.Contains(key)) return null; return ConfigurationManager.AppSettings[key]; } /// /// 获取Db参数 /// public static List GetParams(string sql, T t) { List list = new List(); Type tType = typeof(T); BindingFlags flags = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; int start = sql.IndexOf("@"); while (start != -1) { int end = sql.IndexOf(",", start); if (end == -1) end = sql.IndexOf(")", start); if (end == -1) end = sql.IndexOf(" ", start); if (end == -1) end = sql.Length; string name = sql.Substring(start + 1, end - start - 1); PropertyInfo pi = tType.GetProperty(name, flags); if (pi != null) { object value = pi.GetValue(t, null); DbParameter dp = new NpgsqlParameter("@" + name, value); list.Add(dp); } start = sql.IndexOf("@", end); } return list; } /// /// 执行命令 /// /// 命令集合 public static string ExecCmd(List list) { string str = null; Process p = null; try { p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.Start(); StreamWriter si = p.StandardInput; StreamReader se = p.StandardError; LogOut.Info("cmd = " + string.Join(",", list)); si.AutoFlush = true; foreach (string cmd in list) { si.WriteLine(cmd); } si.WriteLine("exit"); str = se.ReadToEnd(); se.Close(); si.Close(); } catch (Exception ex) { LogOut.Error(ex.Message + "\r\n" + ex.StackTrace); str = ex.Message; } finally { if (p != null) { p.Close(); p = null; } } return str; } /// /// 删除路径 /// public static string DelPath(string path) { List list = new List(); list.Add(string.Format("rd \"{0}\" /s /q", path)); return ExecCmd(list); } /// /// 获取本机IP /// /// public static string GetLocalIP() { var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { return ip.ToString(); } } return GetSetting("localIP"); } } }