繁体   English   中英

c#ASP.NET如何删除另一个进程“正在使用”的文件?

[英]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 []数组中

http://www.vcskicks.com/image-to-byte.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM