阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1081|回复: 0

[.Net] 文件正由另一进程使用,该进程无法访问该文件,解决方法

[复制链接]
  • TA的每日心情
    开心
    2021-8-30 00:00
  • 签到天数: 35 天

    [LV.5]常住居民I

    发表于 2016-8-27 12:38:42 | 显示全部楼层 |阅读模式
      异常提示:
    "文件正由另一进程使用,该进程无法访问该文件"。
      打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示。
      通常造成该错误的原因是构造System.IO.FileStream时参数设置有问题。
      一般习惯直接使用:
    FileStream fs = new FileStream(fileName, FileMode.Open)
    这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
    因此需要使用
    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    设置文件共享方式为读写:FileShare.ReadWrite,这样的话问题就解决了。
      将图片文件加载到Picturebox中后若要删除或覆盖该图片文件也会出现上面异常提示
    pictureBox1.Image = Image.FromFile(sFile);//用此种方式加载图片,关闭页面后该路径的文件可能会仍被线程占用,导致无法删除、覆盖

    pictureBox1.ImageLocation = sFile;及下面方式
                FileStream fs = new FileStream(sFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                byte[]
      bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                MemoryStream ms = new MemoryStream(bytes);
                Bitmap img = new Bitmap(ms);
                pictureBox1.Image = img;
    则不会再继续占用该文件。
      
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表