我用c#复制了一个文件.现在我不能删除它了

本文关键字:不能 删除 文件 复制 我用 一个 | 更新日期: 2023-09-27 18:10:06

我用c#复制了一些目录/文件。现在,我要删除主目录。

这是基本代码:
dir.Delete(true);

,但我认为UnauthorizedAccessException(访问目录)。Acrodata,这是一个文件,拒绝)。

为什么?我怎么能强迫它?

我用c#复制了一个文件.现在我不能删除它了

您可能是1)那里的安全权限有限,无法删除文件,或者2)有一个文件或目录的句柄仍然打开(正在使用),阻止您删除。

Directory.Delete(string);
http://msdn.microsoft.com/en-us/library/62t64db3.aspx

UnauthorizedAccessException

呼叫方没有权限。

首先,您应该从要删除的句柄中删除文件的所有句柄。然后,您可以使用以下代码来确保也删除只读文件:

public static void DeleteDirectory(string target_dir)
{
    string[] files = Directory.GetFiles(target_dir);
    string[] dirs = Directory.GetDirectories(target_dir);
    foreach (string file in files)
    {
        File.SetAttributes(file, FileAttributes.Normal);
        File.Delete(file);
    }
    foreach (string dir in dirs)
    {
        DeleteDirectory(dir);
    }
    Directory.Delete(target_dir, false);
}

来源和更多信息在这个Stackoverflow主题。

您要删除的目录可能是只读的。因此,将ReadOnly属性设置为false并删除该属性将有效。

例句:

var di = new DirectoryInfo("SomeFolder");
di.Attributes &= ~FileAttributes.ReadOnly;

我猜在复制操作之后,您未能正确关闭Streams,这意味着您仍然持有@bland.

所描述的文件句柄。

确保你及时处理你的一次性用品,这个问题很可能会消失。

你有没有试过直接使用

Directory.Delete(folderName, true);
应该递归删除的

?