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();
                        }
                    }
                }
            }
    --------------------------------------------------------------------------------------------------------------------------------------------
    顺势而为
  • 相关阅读:
    过滤评论中的表情
    谈谈你对多进程,多线程,以及协程的理解
    什么是多线程竞争?
    解释以下什么是锁,有哪几种锁?
    .什么是死锁
    多线程交互访问数据,如果访问到了就不访问了?
    什么是线程安全,什么是互斥锁
    说说下面几个概念:同步,异步,阻塞,非阻塞?
    什么是僵尸进程和孤儿进程?怎么避免僵尸进程?
    python中进程与线程的使用场景
  • 原文地址:https://www.cnblogs.com/zhuzhenyu/p/2718239.html
Copyright © 2011-2022 走看看