尝试从目录中删除文件

时间:2012-03-18 10:34:03

标签: c# .net fileinfo

我正在尝试从asp.net应用程序中的目录中删除文件,但我总是得到一个异常,即该文件正由另一个进程使用,这可能是由应用程序本身引起的。

这是代码

TableCell cell = (TableCell)PhotoGalleryGridView.Rows[e.RowIndex].Cells[1];
    DirectoryInfo photoGalleryDirectory = new DirectoryInfo(Server.MapPath("~/GalleryImages/"));
    FileInfo[] imgFiles = photoGalleryDirectory.GetFiles();
    for (int i = 0; i < imgFiles.Length; i++)
    {
        if (imgFiles[i].Name == cell.Text)
        {
            imgFiles[i].Delete();
        }
    }

我应该怎么做这个动作? 感谢

我将此实现为使用gridview中的OnRowDeleting方法的一部分,因此当我从数据库中删除照片时,它也会从网站的文件夹中删除照片。

protected void PhotoGalleryGridView_OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{

    TableCell cell = (TableCell)PhotoGalleryGridView.Rows[e.RowIndex].Cells[1];
    DirectoryInfo photoGalleryDirectory = new DirectoryInfo(Server.MapPath("~/GalleryImages/"));
    FileInfo[] imgFiles = photoGalleryDirectory.GetFiles();
    for (int i = 0; i < imgFiles.Length; i++)
    {
        if (imgFiles[i].Name == cell.Text)
        {
            imgFiles[i].Delete();
        }
    }
}

我非常愿意接受任何其他有关此行动的想法。

2 个答案:

答案 0 :(得分:1)

当您使用封装任何资源的对象时,您必须确保在完成对象时,调用对象的Dispose方法。

使用C#中的using statement可以更轻松地完成此操作。 using语句简化了您必须编写以创建的代码,然后最终清理该对象。 using语句获取指定的资源,执行语句最后调用对象的Dispose方法来清理对象.......

答案 1 :(得分:0)

问题是我的localHost上运行的IIS Express服务。该过程称为iisexpress.exe,即使在我关闭网站并尝试手动删除它之后它也在使用该文件。在我回到使用asp.net开发服务器之后,问题就消失了。 谢谢大家。