如何在应用程序运行时删除文件

时间:2010-11-29 12:40:48

标签: c#-3.0

我开发了一个C#应用程序,在应用程序中用户为每条记录选择一张照片。但是,用户还应该能够使用较新的照片更改预先选择的照片。当用户更改照片时,应用程序首先从应用程序目录中删除旧照片然后复制新照片,但是当它执行此操作时,应用程序会提供异常,因为应用程序使用该文件,因此在应用程序使用时无法删除该文件运行。有没有人知道如何解决这个问题? 感谢您的帮助

这是例外

  

该进程无法访问该文件   “d:\我的   项目\ Hawkar'sProject \ SOFTWARE \应用\ BIN \调试\照片\约翰   Smith.png'因为它被使用了   另一个过程。

 //defining a string where contains the file source path
            string fileSource = Open.FileName;

            //defining a string where it contains the file name
            string fileName =  personNameTextBox.Text + ".png" ;

            //defining a string which specifies the directory of the destination file
            string fileDest = dir + @"\Photos\" + fileName;

            if (File.Exists(fileDest))
            {

               File.Delete(fileDest);
               //this is a picturebox for showing the images
               pbxPersonal.Image = Image.FromFile(dir + @"\Photos\" + "No Image.gif");
               File.Copy(fileSource, fileDest);
            }
            else
            {
                File.Copy(fileSource, fileDest);

            }
            imageIDTextBox.Text = fileDest;

2 个答案:

答案 0 :(得分:3)

首先,你的代码并不好。 只有当前没有图像时才会复制新图像(否则)。 但是如果有旧图像,则只删除此图像,但不要复制较新图像(如果)。

代码应该更像这样:

if (File.Exists(fileDest))
{
    File.Delete(fileDest);
}

File.Copy(fileSource, fileDest);
imageIDTextBox.Text = fileDest;

此代码应该可以使用,但如果您收到该文件已被使用的异常,则应检查您使用该文件的“位置”。也许你正在程序启动时读取文件。如果有一些句柄打开,请检查您正在访问这些用户文件的程序的所有部分。

答案 1 :(得分:0)

非常感谢你的帮助,对于我刚才看到的代码中的错误感到抱歉,我原来的代码就像你写的一样,但我不知道也许当我意外发布时我就这样说了。当应用程序运行时,会出现一个图片框,其中显示了每个记录的图像,这就是为什么当我想要更改图片时应用程序发出异常,因为它已经被图片框使用了一次,但我也尝试过在删除原始图片之前将另一张图片加载到图片框中但仍然相同。如果你想检查一下,我已经修改了上面的内容