C# 写入日志文件通用方法【能否优化 ==ture?优化思路:指导】
public class FileManager{
/// <summary>
/// 公用的日志文件写入方法【写入数据到txt文件中】
/// </summary>
/// <param name="Folder">txt文件的上一级目录,该目录为Folder(文件夹)</param>
/// <param name="FileName">txt的文件名称,eg: test.txt文档</param>
/// <param name="Data">需要写进FileName文件中的数据</param>
public void Public_WriteIntoTxt_Method(string Folder,string FileName,string Data)
{
////TODO 需要对文件流的操作进一步进行优化
//获取程序运行的基目录
string RunBasePath = AppDomain.CurrentDomain.BaseDirectory;
//获取txt文件的目录的具体路径
string FilePath = RunBasePath + Folder;
//判断此基目录是否存在文件夹Folder
if (Directory.Exists(FilePath) == true)
{
//Folder存在,直接进行数据操作
//判断txt文件是否存在
if (ExistsFile_TrueOrFalse(FilePath, FileName) == true)
{
try
{
//文件存在,直接写入数据
WriteDataIntoTxt(FilePath, FileName, Data);
}
catch (Exception e)
{
throw e;
}
}
else
{
try
{
//文件不存在,创建文件后再写入数据
CreatFileAndWriteData(FilePath, FileName, Data);
}
catch (Exception e)
{
throw e;
}
}
}
else
{
//Folder不存在,创建Folder
Directory.CreateDirectory(FilePath);
//判断txt文件是否存在
if (ExistsFile_TrueOrFalse(FilePath, FileName) == true)
{
try
{
//文件存在,直接写入数据
WriteDataIntoTxt(FilePath, FileName, Data);
}
catch (Exception e)
{
throw e;
}
}
else
{
try
{
//文件不存在,创建文件后再写入数据
CreatFileAndWriteData(FilePath, FileName, Data);
}
catch (Exception)
{
throw;
}
}
}
}
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <param name="FilePath">文件的上一级路径</param>
/// <param name="FileName">文件的名称</param>
/// <returns>如果存在该文件则返回True,不存在则返回False</returns>
public bool ExistsFile_TrueOrFalse(string FilePath, string FileName)
{
return File.Exists(FilePath + "/" + FileName);
}
/// <summary>
/// 当通过ExistsFile_TrueOrFalse函数判断文件【不存在】时
/// 重新创建文件,并向该文件中写入需要写入的数据
/// 会自动换行
/// </summary>
/// <param name="FilePath">文件的上一级路径</param>
/// <param name="FileName">文件的名称</param>
/// <param name="Data">需要写入文件的数据流</param>
public void CreatFileAndWriteData(string FilePath, string FileName, string Data)
{
//根据传入的路径和文件的名称创建该文件
FileStream CreateFile = new FileStream(FilePath + "/" + FileName, FileMode.Create, FileAccess.Write);
//创建文件成功后开始进行数据写入
StreamWriter WriteDate = new StreamWriter(CreateFile);
//尝试写入数据
try
{
WriteDate.WriteLine(Data);
}
catch (Exception e)
{
throw e;
}
finally
{
//写入完成,清楚缓冲区并关闭Stream
WriteDate.Flush();
WriteDate.Close();
}
}
/// <summary>
/// 当通过ExistsFile_TrueOrFalse函数判断文件【存在】时
/// 将直接向该文件中写入数据
/// 重新写入的数据会自动换行
/// </summary>
/// <param name="FilePath">文件的上一级路径</param>
/// <param name="FileName">文件的名称</param>
/// <param name="Data">需要写入文件的数据流</param>
public void WriteDataIntoTxt(string FilePath, string FileName, string Data)
{
//根据传入的文件路径和名称,创建FileStream对象
FileStream WriteFile = new FileStream(FilePath + "/" + FileName, FileMode.Append, FileAccess.Write);
//进行数据的写入
StreamWriter WriteData = new StreamWriter(WriteFile);
//尝试写入数据
try
{
WriteData.WriteLine(Data);
}
catch (Exception e)
{
throw e;
}
finally
{
//写入完成,清除缓冲区并关闭Stream
WriteData.Flush();
WriteData.Close();
}
}
}
以上代码全部自己手写 飞/可爱朋 发表于 2014-9-26 01:11
以上代码全部自己手写
- -一个文件流怎么写的那么麻烦 文件流写入错误信息到本地
http://www.ibcibc.com/forum.php?mod=viewthread&tid=1134&fromuid=1
(出处: C#论坛-C#教程,ASP.NET教程)
good
页:
[1]