.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();
} 展开
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();
} 展开
4个回答
展开全部
开发中往往遇到这样的情况就是第一次使用了文件但是用完了之后忘记释放这个资源导致下次再次使用的时候这个文件就被占了,你这边就就是因为资源没有释放的原因导致第二次就报错由另一进程使用,因此该进程无法访问该文件
所以要把资源释放了下次才能再使用
在后面加一句:fileInfo.Close();
所以要把资源释放了下次才能再使用
在后面加一句:fileInfo.Close();
追问
http://zhidao.baidu.com/question/573269793.html 请帮我看看具体的 非常感谢。
展开全部
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,这样的话,就可以打开了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把右下角的那些像书本一样的都关了试试 目测是你上传和下载的文件没有完全的退出 所以才会这样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能否用Dispatcher之类的释放下资源?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询