很多時候,我們需要把重要信息輸出到某個文件中,進行查閱。
思路:創建文件夾(有則跳過)==> 創建文件(是否覆蓋,是否刪除之前的文件,是否保留某一個時間段的文件)==>寫入
示例:向當前項目路徑添加文件夾,並向裏面創建文件(僅保留當天的文件),今天之前的文件連同文件夾一起刪除,然後重新創建今天的文件及文件夾
代碼:
/// <summary> /// 寫入文件 /// </summary> /// <param name="infos"></param> public void WriteToFile(List<OutputInfo> infos) { try { #region var baseDir = AppDomain.CurrentDomain.BaseDirectory; var path = baseDir + @_dicConfig["OutPutPath"].ToString(); //刪除不是當天的文件夾和文件 DelDirectory(path); //判斷是否有這個文件夾 var filePath = $"{path}/IPURL_{DateTime.Now.ToString("yyyyMMdd")}"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } var pathf = $"{filePath}/{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt"; #endregion FileStream fs = new FileStream(pathf, FileMode.Create, FileAccess.Write); //System.IO.File.SetAttributes(path, FileAttributes.Hidden); StreamWriter sw = new StreamWriter(fs); //開始寫入值 sw.WriteLine("程序開始寫入IP-URL信息..."); foreach (var item in infos) { sw.WriteLine("Ip:" + item.IP + ",Url:" + item.URL); } sw.WriteLine("程序寫入完成"); sw.Close(); fs.Close(); } catch (Exception ex) { Log.Write("error[WriteToFile]:" + ex.Message, SWLog.LogLevel.D錯誤事件); } } /// <summary> /// 刪除文件和文件夾(保留當天) /// </summary> /// <param name="folderPath"></param> public void DelDirectory(string folderPath) { if (System.IO.File.Exists(folderPath)) { DirectoryInfo dyInfo = new DirectoryInfo(folderPath); //獲取文件夾下所有的文件夾 foreach (DirectoryInfo feInfo in dyInfo.GetDirectories()) { //判斷文件日期是否小於今天,是則刪除 if (feInfo.CreationTime < DateTime.Today) feInfo.Delete(true); } //獲取文件夾下所有的文件 foreach (FileInfo feInfo in dyInfo.GetFiles()) { feInfo.Delete(); } } }
加載配置文件:
/// <summary> /// 獲取配置信息 /// </summary> /// <param name="pluginName">插件名稱</param> /// <param name="isTrim">插件名稱</param> /// <returns></returns> protected Dictionary<string, string> GetDicConfig(string pluginName, bool isTrim = true) { var retdic = new Dictionary<string, string>(); // config配置文件全路徑 var localConfigPath = string.Format("{0}/plugins/{1}/config.txt", AppDomain.CurrentDomain.BaseDirectory, pluginName); if (File.Exists(localConfigPath) != false) { using (System.IO.StreamReader sr = new StreamReader(localConfigPath)) { string tmp = string.Empty; while ((tmp = sr.ReadLine()) != null) { if (tmp.TrimStart().StartsWith("#")) { continue; } string tmp_ary; if (isTrim) { tmp_ary = tmp.Trim().Split('#')[0].Trim(); } else { tmp_ary = tmp.Split('#')[0]; } var ary = tmp_ary.Split('='); if (ary.Length >= 2) { retdic.Add(ary[0].Trim(), tmp_ary.Substring(ary[0].Length + 1, tmp_ary.Length - ary[0].Length - 1)); } } } Log.Write(string.Format("開始加載配置文件:{0}.", localConfigPath), SWLog.LogLevel.G有用信息); } else { Log.Write(string.Format("未發現配置文件:{0}.", localConfigPath), SWLog.LogLevel.G有用信息); } return retdic; }
配置文件路徑:
獲取的配置文件信息字典:
寫入日誌如下: