请问大家,File.Create(file_Name)为何会随机出现Access denied

vc_learner 2018-01-23 02:03:57
我用 File.Create(完整路径文件名)创建文件,
程序运行大部分正常,
但是有时会出现 Access to the path '完整文件名' is denied

百度了,基本说是权限问题,但是那些的都是每次会出现,
而我这个是随机出现.
找了很久没有解决

请问大家知道为何否?
...全文
563 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenjin 2018-01-27
  • 打赏
  • 举报
回复
这种操作通常要做并发处理的,给你段参考代码

    #region 将异常写入日志
    public static class LogManager
    {
        static object locker = new object();
        /// <summary>  
        /// 重要信息写入日志  
        /// </summary>  
        /// <param name="logs">日志列表,每条日志占一行</param>  
        public static void WriteProgramLog(params string[] logs)
        {
            lock (locker)
            {
                string path = typeof(frmMain).Assembly.Location; //第一句代码 是获取CsAddPanel 这个类所在 程序集dll 的物理路径  
                string pro = Path.GetDirectoryName(path); //第二句代码 是获取这个dll程序集所在的目录位置  

                string LogAddress = pro + @"\log";
                if (!Directory.Exists(LogAddress + "\\PRG"))
                {
                    Directory.CreateDirectory(LogAddress + "\\PRG");
                }
                LogAddress = string.Concat(LogAddress, "\\PRG\\",
                 DateTime.Now.Year, '-', DateTime.Now.Month, '-',
                 DateTime.Now.Day, "_program.log");
                StreamWriter sw = new StreamWriter(LogAddress, true);
                foreach (string log in logs)
                {
                    sw.WriteLine(string.Format("[{0}] {1}", DateTime.Now.ToString(), log));
                }
                sw.Close();
            }
        }
    }
    #endregion
ztmsimon 2018-01-24
  • 打赏
  • 举报
回复
是不是没有关闭,File.Create的返回是个filestream,需要关闭
vc_learner 2018-01-23
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
你是多线程并发的吗?
只有一个线程 ,就是在一个Form的Button事件里创建一个线程来对文件读写操作,(因为时间长,会出现界面假死,才用线程) 其实是批量将ZIP文件解压,然后对里面的2,30个小文件作些处理,再压缩 , 我在我电脑上运行很好,但是给别人用就偶尔出现这个问题;
vc_learner 2018-01-23
  • 打赏
  • 举报
回复
引用 1 楼 kampoo 的回复:
1. 大部分时候是代码的问题(我的经验,每次怀疑是人品问题最后发现都是逻辑问题)可以贴一下代码看看。 2. 如果创建速度太快的话,也许会出现这个问题。毕竟文件系统的应用场景是一次创建、多次访问,而不是快速多次创建的。 3. 是不是多个线程在同时创建,这个有可能引发并发问题。
谢谢回复,我也试试在这几方面排查;
正怒月神 2018-01-23
  • 打赏
  • 举报
回复
你是多线程并发的吗?
kampoo 2018-01-23
  • 打赏
  • 举报
回复
1. 大部分时候是代码的问题(我的经验,每次怀疑是人品问题最后发现都是逻辑问题)可以贴一下代码看看。 2. 如果创建速度太快的话,也许会出现这个问题。毕竟文件系统的应用场景是一次创建、多次访问,而不是快速多次创建的。 3. 是不是多个线程在同时创建,这个有可能引发并发问题。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧