指定路徑創建文件,並寫入數據

很多時候,我們需要把重要信息輸出到某個文件中,進行查閱。

思路:創建文件夾(有則跳過)==> 創建文件(是否覆蓋,是否刪除之前的文件,是否保留某一個時間段的文件)==>寫入

示例:向當前項目路徑添加文件夾,並向裏面創建文件(僅保留當天的文件),今天之前的文件連同文件夾一起刪除,然後重新創建今天的文件及文件夾

代碼:

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

配置文件路徑:

 

 

獲取的配置文件信息字典:

 

 

寫入日誌如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章