【问题标题】:Trying to delete a file from directory试图从目录中删除文件
【发布时间】:2012-03-18 10:34:02
【问题描述】:

我试图从 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();
        }
    }
}

对于此操作,我非常愿意接受任何其他想法。

【问题讨论】:

  • 在尝试解决如何删除锁定的文件之前,我会尝试知道文件被锁定的原因和位置!
  • 好的,我怎么知道是什么锁定了文件?

标签: c# .net fileinfo


【解决方案1】:

当您使用一个封装了任何资源的对象时,您必须确保当您使用完该对象时,会调用该对象的 Dispose 方法。

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

【讨论】:

  • 我的代码的哪一部分应该用 using 语句括起来?
  • 您应该检查与该文件相关的所有连接.....如果这些连接没有被处理,它们仍然会由于连接而产生问题......所以,我更喜欢使用 using 语句在那些连接中,因为它实现了 IDisposable 接口......所以,检查与该字段相关的所有连接......
  • 好答案 1+ 你应该使用这样的语句:FileInfo 文件;使用(FileInfo[] imgFiles = photoGalleryDirectory.GetFiles ()) { for (int i = 0; i
  • 当我用 using 包围语句时,出现此错误:System.IO.FileInfo[]': 在 using 语句中使用的类型必须隐式转换为 'System.IDisposable'
  • 如何获取项目中的所有图片??您在项目中使用什么机制(手动保存或上传)??
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2015-12-26
    • 2020-01-27
    • 2012-05-14
    • 2012-01-31
    相关资源
    最近更新 更多