代码之家  ›  专栏  ›  技术社区  ›  Sandy

如何对单个文件执行多个写操作?

  •  0
  • Sandy  · 技术社区  · 15 年前

    我在ASP.NET 2.0中有一个网站,它在文件中写了一些东西。但同时,如果另一个用户访问了该站点,则在该文件的第一个操作完成之前,它不会工作,在第二个操作完成之后,就可以对该文件进行操作。 如何处理这种情况。

                AppConfiguration appConfiguration = new AppConfiguration();
        string LogFile =String.Empty;
        string sLogFormat =string.Empty;
        string sErrorTime =string.Empty;
        StreamWriter sw=null;
        public LogManager()
        {
    
            if(!File.Exists(AppConfiguration.LogFilePath))
            {
                Directory.CreateDirectory(AppConfiguration.LogFilePath);
            }
    
            LogFile = AppConfiguration.LogFilePath+"WAP"+sErrorTime + ".log";
            if(!File.Exists(LogFile))
            {
             File.Create(LogFile);
            }
        }
    
        public void closeStream()
        {
            if(sw != null)
            {
                sw.Close();
            }
        }
    
        public void LogException(string className,string methodName, string errorMessage)
        {
            try
            {
                if(!File.Exists(LogFile))
                {
                    File.Create(LogFile);
                }
    
                sw = new StreamWriter(LogFile,true);
    
                sw.WriteLine(DateTime.Now.ToString() + " | " + className + ":" + methodName + ":"+ errorMessage);
                sw.Flush();
                sw.Close();
            }
            catch(Exception)
            {
                if(sw != null)
                {
                    sw.Close();
                }
            }
    
        }
    
    2 回复  |  直到 15 年前
        1
  •  0
  •   Slartibartfast    15 年前

    与其为每个条目打开和关闭日志文件,还不如考虑使用一个单独的日志记录进程(例如,Syslog或单独的日志记录线程)来保持日志文件打开。

        2
  •  -1
  •   vamyip    15 年前

    如果多个用户要处理一个纯文本文件,那么将行写入该文件将使其混乱。相反,您可以使用数据库来存储/检索文本。如果需要,您甚至可以在某处提供一个按钮,将记录导出到纯文本文件。