• 指定路径创建文件,并写入数据


    很多时候,我们需要把重要信息输出到某个文件中,进行查阅。

    思路:创建文件夹(有则跳过)==> 创建文件(是否覆盖,是否删除之前的文件,是否保留某一个时间段的文件)==>写入

    示例:向当前项目路径添加文件夹,并向里面创建文件(仅保留当天的文件),今天之前的文件连同文件夹一起删除,然后重新创建今天的文件及文件夹

    代码:

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

    配置文件路径:

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

    写入日志如下:

  • 相关阅读:
    邻接表怎么写
    hiho一下 第二十五周(SPFA)
    hdu 1426 Sudoku Killer(DFS)
    hdu5147 (sequence 2) 树状数组
    hdu1233 prim
    输入输出外挂
    RMQ-ST求区间最值
    最近公共祖先(简单版)
    【Java】【20】后台发送GET/POST方法
    【实战问题】【11】导入Maven项目后报错,Project configuration is not up-to-date with pom.xml. Run project configuration update
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/11951128.html
Copyright © 2020-2023  润新知