zoukankan      html  css  js  c++  java
  • c# 中文件操作 文件被锁住的问题

    这两个在调整以前写过的代码,把以前代码里面的一些小问题都改了一下,这其中有一个文件操作的BUG,我在这里讲一下。

    一般系统都会有自己的日志模块,来快速确定系统发生异常的位置,我这里的一个项目的日志系统是自己用System.IO.File这个类来写的,当Web上面同时发生两个请求时,日志模块会同时操作一个文件导致系统异常。以前的解决办法是把打日志的等级调高,来做到少打日志。今天在群里面专门找人问了一下,终于解决了这个问题。我们先看一下我以前是怎么写的吧。

            static object obj = new object();
            /// <summary>
            ///  创建一个TXT文件
             /// </summary>
            /// <param name="FILE_NAME">文件路径</param>
            /// <param name="str">内容</param>
            public static void WriteFile(string FILE_NAME, string str)
            {
                System.IO.StreamWriter sw = null;
                sw = System.IO.File.AppendText(FILE_NAME);
                sw.WriteLine(str);
                lock (obj)
                {
                    sw.Flush();
                    sw.Close();
                }
    
            }

    这里我们看到我妄想用文件锁的方式来解决这样的问题。但是没有什么效果,现在改为下面的方式,就完全没有了文件操作的问题。

             /// <summary>
            ///  创建一个TXT文件
             /// </summary>
            /// <param name="FILE_NAME">文件路径</param>
            /// <param name="str">内容</param>
            public static void WriteFile(string FILE_NAME, string str)
            {
                using (FileStream fs = new FileStream(FILE_NAME, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
                {
                    if (fs.CanWrite)
                    {
                        using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default))
                        {
                            sw.WriteLine(str);
                            sw.Flush();
                        }
                    }
                }
            }
    --------------------------------------------------------------------------------------------------------------------------------------------
    顺势而为
  • 相关阅读:
    Boost Log : Log record formatting
    Boost Log : Attributes
    PLSA的EM推导
    特征处理:一点经验
    海量推荐系统:mapreduce的方法
    操作系统之存储器管理
    maredit测试
    算法:链表
    c++特别要点:多态性与虚函数
    sizeof的用法与字节对齐
  • 原文地址:https://www.cnblogs.com/zhuzhenyu/p/2718239.html
Copyright © 2011-2022 走看看