[英]c# ASP.NET How do i delete a file that is “in use” by another process?
我正在加载文件:
System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);
现在,我想保存图像:
img.Save(SavePath);
除非FilePath == SavePath
,否则它将决定给我错误:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
因此,我尝试在打开文件后立即删除该文件:
System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);
File.Delete(FilePath);
它给了我错误:
System.IO.IOException: The process cannot access the file 'filename.jpg' because it is being used by another process.
所以...如果某人不使用该文件,我该如何修改该文件?
图像将一直保持锁定,直到将其丢弃( 请参阅此处 )。
该文件将保持锁定,直到处理完映像为止。
您必须将图像保存在其他位置(或复制其内容),然后使用using
子句处理打开的图像。
例:
using(Image image1 = Image.FromFile("c:\\test.jpg"))
{
image1.Save("c:\\test2.jpg");
}
System.IO.File.Delete("c:\\test.jpg");
System.IO.File.Move("c:\\test2.jpg", "c:\\test.jpg");
您可以使用内存流,也可以将其放入byte []数组中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.