我用c#复制了一个文件.现在我不能删除它了
本文关键字:不能 删除 文件 复制 我用 一个 | 更新日期: 2023-09-27 18:10:06
我用c#复制了一些目录/文件。现在,我要删除主目录。
这是基本代码:dir.Delete(true);
,但我认为UnauthorizedAccessException
(访问目录)。Acrodata,这是一个文件,拒绝)。
为什么?我怎么能强迫它?
您可能是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);
应该递归删除的?