引用:https://www.cnblogs.com/likui-bookHouse/p/11951128.html
很多时候,我们需要把重要信息输出到某个文件中,进行查阅。
思路:创建文件夹(有则跳过)==> 创建文件(是否覆盖,是否删除之前的文件,是否保留某一个时间段的文件)==>写入
示例:向当前项目路径添加文件夹,并向里面创建文件(仅保留当天的文件),今天之前的文件连同文件夹一起删除,然后重新创建今天的文件及文件夹
代码:
/// <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;
}
配置文件路径:

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

写入日志如下:

