相关疑难解决方法(0)

如何在C#中删除包含只读文件的目录?

我需要删除包含只读文件的目录.哪种方法更好:

  • 使用DirectoryInfo.Delete(),或,

  • ManagementObject.InvokeMethod("Delete")

有了DirectoryInfo.Delete(),我必须手动关闭每个文件的只读属性,但ManagementObject.InvokeMethod("Delete")似乎不需要.有没有人比另一个人更优先?

示例代码(test.txt是只读的).

第一种方式:

DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");

DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");
File.SetAttributes(@"C:\Users\David\Desktop\Test\test.txt", FileAttributes.Archive);
test.Delete(true);
Run Code Online (Sandbox Code Playgroud)

第二种方式:

DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");

DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");

string folder = @"C:\Users\David\Desktop\Test";
string dirObject = "Win32_Directory.Name='" + folder + "'";
using (ManagementObject managementObject = new ManagementObject(dirObject))
{
    managementObject.Get();
    ManagementBaseObject outParams = managementObject.InvokeMethod("Delete", null,
    null);
    // ReturnValue should be 0, else failure
    if (Convert.ToInt32(outParams.Properties["ReturnValue"].Value) != 0) …
Run Code Online (Sandbox Code Playgroud)

c# directory readonly delete-directory

54
推荐指数
4
解决办法
5万
查看次数

C#。如何删除git文件夹?

我的 C# 代码调用 git 和克隆存储库,但是当我的程序结束时,我需要删除这个包含克隆存储库的文件夹。当我使用

Directory.Delete(path, true)
Run Code Online (Sandbox Code Playgroud)

除 .git 之外的所有文件都将被删除,并且当程序尝试删除 .git 时 -

"Access to the path 'pack-3241a6c3ea7ff447e5ba864f5d87ef66c5913670.idx' is denied."
Run Code Online (Sandbox Code Playgroud)

我试过

Directory.Delete 不起作用。访问被拒绝错误,但在 Windows 资源管理器下没问题

但这无济于事。

我该如何解决它?

c#

2
推荐指数
1
解决办法
1406
查看次数

标签 统计

c# ×2

delete-directory ×1

directory ×1

readonly ×1