.net 提示正由另一进程使用,因此该进程无法访问该文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net 提示正由另一进程使用,因此该进程无法访问该文件相关的知识,希望对你有一定的参考价值。

我再做一个上传下载系统,在电脑上存储了其他人上传的文件,已加密。下载做下载时要解密,解密后将要下载的文件存在另外一个文件夹里,然后再用 这段代码来下载文件,每次解密后点下载就会提示这个文件正在被另一进程使用,怎么办怎么办呢??我感觉是解密的时候把源文件存入了解密后的盘在占用进程??怎么解决呀
string fileName = "asd.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();

开发中往往遇到这样的情况就是第一次使用了文件但是用完了之后忘记释放这个资源导致下次再次使用的时候这个文件就被占了,你这边就就是因为资源没有释放的原因导致第二次就报错由另一进程使用,因此该进程无法访问该文件
所以要把资源释放了下次才能再使用
在后面加一句:fileInfo.Close();追问

http://zhidao.baidu.com/question/573269793.html 请帮我看看具体的 非常感谢。

参考技术A

System.IO.FileStream fs = new System.IO.FileStream(fileName,

System.IO.FileMode.Open)

这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了。

因此需要使用

System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);

设置文件共享方式为读写,FileShare.ReadWrite,这样的话,就可以打开了。

参考技术B 你把右下角的那些像书本一样的都关了试试 目测是你上传和下载的文件没有完全的退出 所以才会这样 参考技术C 能否用Dispatcher之类的释放下资源?

以上是关于.net 提示正由另一进程使用,因此该进程无法访问该文件的主要内容,如果未能解决你的问题,请参考以下文章

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

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

FileStream: 文件“XXX”正由另一进程使用,因此该进程无法访问此文件

C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题

该进程无法访问该文件,因为它正由另一个进程使用(文件已创建但不包含任何内容)