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

异常提示:
“文件正由另一进程使用,该进程无法访问该文件”。
打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示。
通常造成该错误的原因是构造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;

则不会再继续占用该文件。

时间: 2024-10-29 18:15:39

文件正由另一进程使用,该进程无法访问该文件,解决方法的相关文章

因用了NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误的解决方法

今天遇到一个问题,就是"NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误",百度后发现了一个解决方法,跟大家分享下: NeatUpload是一个开源的大文件上传控件,非常的强大,支持文件类型过滤.上传进度条显示.多文件上传等强大的功能. 但部署至项目后,有些地方用普通的FileUpload上传时却发生了一个错误(Nonfile portion > 4194304 bytes,文件大于默认值4M),因如果用NeatUp

(转)连接带有密码的ACCESS数据库时出现“无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开”的解决方法

原文:http://www.cnblogs.com/chiname/articles/582539.html 连接带有密码的ACCESS数据库时出现“无法启动应用程序.工作组信息文件丢失,或是已被其它用户以独占方式打开”的解决方法:此问题是由数据库的连接串引起的,可用下面的串连接即可 Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;Data Source=<YourPath>;Jet OLEDB:Database Pass

使用py2exe 将python文件转成exe文件(以及 error: [Errno 2] No such file or directory: &#39;MSVCP90.dll&#39;解决方法)

用python写程序真的很简单,当我们开发出功能后,特别是带窗体的python程序,需要将python程序转成双击运行的exe程序.我们需要一个第三方模块 py2exe,就是将py转成exe的模块.只需py2exe怎么安装,我这里就不详细说明了,直接到官网上下载对应python的py2exe版本,然后是傻瓜式安装,并且安装好后py2exe模块会自动添加到python的路径中. 然后就简单了,我们在要被转换成exe的py文件目录下新建一个 setup.py 文件,将代码贴进去: #coding=u

mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法

mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql server 2008也同样会出现,有时候会出现“备份集中的数据库备份与现有的xx数据库不同”的错误提示,本文也一并把解决方法说道说道. 第一部分,mssql server 2005(2008)还原数据库bak文件. 一.连接上数据库,右键数据库,选择新建数据库,输入你要还原数据库的名称. 二.确定后右

cmd下运行java文件时,找不到或无法加载主类的解决方法

最近再看java,却被一个看似很基础的hellorworld头疼了十几分钟,百度了一下,若你在cmd下编辑及运行.java文件时报错,解决方案如下,如图所示: d盘根目录下的.java文件. 打开cmd,进入d盘根目录进行javac demo.java,如图所示: 这一步是不会报错的,因为只要你的classpath设置成功,不会存在报错问题, 此时我们看到刚刚编译的demo.class已经出现在根目录下. 继续下一步时,我们会发现cmd报错,如图所示: 相信很多刚入门的同学们都遇到了这个问题,百

关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法

转载:http://www.floatinglife.cn/关于heritrix安装配置时出现必须限制口令文件读取访问 最近开始写一个RSS聚合程序,需要爬虫支持,于是就整来heritrix,没想到,这东西还挺拽,费了老衲好几个小时来安装配置这个heritrix.最后经过不懈努力,终于起来了,具体步骤如下:你如果在网上找相关配置,大多数都是讲先修改conf/properties文件的用户名和密码以及修改jmxremote.password.template,然后将其改名复制到heritrix根目

linux下vi或vim编辑文件时提示Found a swap file by the name的原因及解决方法

在linux下用vi或vim打开test.java文件时 [[email protected] test]# vi test.java 出现了如下信息: E325: ATTENTION     Found a swap file by the name ".test.java.swp"             owned by: root   dated: Wed Dec  7 13:52:56 2011         file name: /var/tmp/Test.java  

关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法

一.问题现象: 当我们使用NFSv4这个版本的NFS服务给客户端提供共享文件系统时,会产生共享文件夹下的文件的属主和属组都是nobody的现象,具体现象见下图: 二.问题原因: 造成UID和GID显示为nobody的原因是,nfsv4提供了称为rpc.idmapd 的守护进程,这个服务的配置文件是 /etc/idmapd.conf .当收到来自客户端的加载请求时,该守护进程将处理UID 和 GID 映射,如果不对其进行配置,这个服务默认将共享目录内文件的UID和GID映射为nobody,见下图:

Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法

默认Attach to选择了Automatically determine the type of code to debug,显示Native Code.但附加进程到iexplore.exe断点无法命中. 解决方法是手动选择Code Type Natvie.

巧用FileShare解决C#读写文件时文件正由另一进程使用的bug

在使用C#进行文件读写的时候,一旦对文件操作频繁,总会碰到一些令人措手不及的意外.例如经常会碰到的一个问题: System.IO.IOException: 文件“XXX”正由另一进程使用,因此该进程无法访问此文件.这个问题是碰到最频繁的一个.其实可 以通过FileShare来完美解决这个问题,下面提供一个例子: /*filePath为传过来的文件路径,endcode为设置的文件编码方式*/ using (FileStream fs = new FileStream(filePath, FileM