飞/可爱朋 发表于 2014-9-26 09:10:25

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 09:11:07

以上代码全部自己手写

ibcadmin 发表于 2014-9-26 16:58:14

飞/可爱朋 发表于 2014-9-26 01:11
以上代码全部自己手写

- -一个文件流怎么写的那么麻烦

ibcadmin 发表于 2014-9-26 16:58:51

文件流写入错误信息到本地
http://www.ibcibc.com/forum.php?mod=viewthread&tid=1134&fromuid=1
(出处: C#论坛-C#教程,ASP.NET教程)

ray-3d 发表于 2014-12-3 13:46:20

good
页: [1]
查看完整版本: C# 写入日志文件通用方法【能否优化 ==ture?优化思路:指导】