gpt4 book ai didi

c# - DirectoryInfo.Delete 与 Directory.Delete

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:27 27 4
gpt4 key购买 nike

我想删除一些临时文件的内容,所以我正在开发一个小程序来帮我删除它们。我有这两个代码示例,但我对以下内容感到困惑:

  1. 哪个代码示例更好?
  2. 第一个示例 code1 删除文件 1 和 2,但第二个示例 code2 将删除文件夹 1 和 2 的包含内容?

代码1

    public void DeleteContains(string Pathz)
{
List<DirectoryInfo> FolderToClear = new List<DirectoryInfo>();
FolderToClear.Add(new DirectoryInfo(@"C:\Users\user\Desktop\1"));
FolderToClear.Add(new DirectoryInfo(@"C:\Users\user\Desktop\2"));

foreach (DirectoryInfo x in FolderToClear)
{
x.Delete(true);
}
}

代码 2

    private void DeleteContents(string Path)
{
string[] DirectoryList = Directory.GetDirectories(Path);
string[] FileList = Directory.GetFiles(Path);

foreach (string file in FileList)
{
File.Delete(file);
}
foreach ( string directoryin DirectoryList)
{
Directory.Delete(directory, true);
}
}

最佳答案

编辑:我相信 OP 想要比较 DirectoryInfo.Delete 和 Directory.Delete。

如果您查看每个方法的反编译源代码(我使用 resharper 向我展示),您可以看到 DirectoryInfo.Delete 和 Directory.Delete 都使用 4 个参数调用 Delete 方法。恕我直言,唯一的区别是 Directory.Delete 必须调用 Path.GetFullPathInternal 来获取完整路径。 Path.GetFullPathInternal 实际上是一个很长的方法,有很多检查。如果不对性能进行一系列测试,就不太可能确定哪个更快以及快多少。

目录.删除

    [ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static void Delete(String path, bool recursive)
{
String fullPath = Path.GetFullPathInternal(path);
Delete(fullPath, path, recursive, true);
}

目录信息.删除

    [ResourceExposure(ResourceScope.None)] 
[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
public void Delete(bool recursive)
{
Directory.Delete(FullPath, OriginalPath, recursive, true);
}

关于c# - DirectoryInfo.Delete 与 Directory.Delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com