从文件中读取图像,然后删除文件

Read image from file, then delete file

我在我的应用程序中打开照片,使用以下代码:

Image^ image = Image::FromFile("Image.jpg");

pictureBox1->ImageLocation="Image.jpg";

FileInfo^ FileInfoStr = gcnew FileInfo("Image.jpg");

现在,删除系统照片,使用以下代码:

File::Delete("Image.jpg");

FileInfo^ FileInfoStr = gcnew FileInfo("Image.jpg");
FileInfoStr->Delete();

DeleteFile("Image.jpg");

但代码不起作用

错误

无法删除文件,文件已在其他程序中打开

帮我删除文件。

Image::FromFile 保持文件锁定。你可以做的是:

  1. 以二进制模式打开文件(FileStream)
  2. FileStream的全部内容读入MemoryStream
  3. 关闭文件
  4. 使用 MemoryStream
  5. 创建 Image 对象

另一种方法是 Clone Image,然后处理原始 Image 对象并使用克隆的实例。克隆管理自己的内存,不保留对原始流的引用。