文件无法被其他进程使用

时间:2009-12-16 12:57:20

标签: asp.net

当我尝试删除此文件时,我收到此消息 文件无法被其他进程使用删除 即使文件未被任何其他用户使用 我正在使用的代码

try 
{

FileInfo TheFile = new FileInfo(MapPath(".") + "\\" + txtFile.Text);
if (TheFile.Exists) {
File.Delete(MapPath(".") + "\\" + txtFile.Text);
} 
else {

throw new FileNotFoundException();
}
}

catch (FileNotFoundException ex) {

lblStatus.Text += ex.Message;
}

我们可以分配一个布尔值
此处如果为true则表示我可以显示消息tellfile已成功删除   布尔值为false 此处如果为false则表示我可以显示另一个进程使用的消息告知文件

我可以在这里写下这个条件 File.Delete(MapPath(".") + "\\" + txtFile.Text);    任何帮助都会非常感谢你

6 个答案:

答案 0 :(得分:3)

根据我的经验,如果它说该文件正由另一个进程使用,则 文件被另一个进程使用,无论你怎么想......

下载ProcessExplorer以了解罪魁祸首是谁......

答案 1 :(得分:1)

您可以使用

FileInfo.Delete

方法。如果该文件不存在,则此方法不执行任何操作。

<强> 注意

同时检查已锁定此文件的任何其他文件句柄,在删除文件之前将其关闭。

答案 2 :(得分:1)

我认识的派对有点晚了,但希望这些评论可以帮助其他人 - &gt;

问题不在Chrome中,而是在IE6 / 7/8和FF中。这种方法现在适用于后来的浏览器:

                    try
                    {

                        System.IO.File.Delete(basePath + assetImage.Path);
                    }
                    catch 
                    {
                        System.IO.File.Move(basePath + assetImage.Path, basePath + @"DELETE\ " + assetImage.Path);
                    }

答案 3 :(得分:0)

你为什么不试试

if (TheFile.Exists) {
   TheFile.Delete();
}

答案 4 :(得分:0)

如果启用了索引服务,请确保从索引列表中排除此文件夹。

答案 5 :(得分:0)

如果你想要一个方法,如果文件被成功删除则只返回true,否则返回false,我会选择:

        public bool DeleteFile(string fullPath) {
            bool fileDeleted = false;

            if (System.IO.File.Exists(fullPath))
            {
                try
                {
                    System.IO.File.Delete(fullPath);
                    fileDeleted = true;
                }
                catch (UnauthorizedAccessException)
                {
                    // File is open **or read only**
                }
            }
            else
            {
                // File does not exist
            }

            return fileDeleted;
        }