首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryInfo.Delete对Directory.Delete

DirectoryInfo.Delete对Directory.Delete
EN

Stack Overflow用户
提问于 2012-12-14 19:06:07
回答 2查看 4.5K关注 0票数 3

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

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

code1

代码语言:javascript
复制
    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

代码语言:javascript
复制
    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);
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2012-12-14 19:24:12

编辑:我相信OP希望对DirectoryInfo.Delete和Directory.Delete进行比较。

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

Directory.Delete

代码语言:javascript
复制
    [ResourceExposure(ResourceScope.Machine)]
    [ResourceConsumption(ResourceScope.Machine)]
    public static void Delete(String path, bool recursive)
    { 
        String fullPath = Path.GetFullPathInternal(path);
        Delete(fullPath, path, recursive, true); 
    } 

DirectoryInfo.Delete

代码语言:javascript
复制
    [ResourceExposure(ResourceScope.None)] 
    [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
    public void Delete(bool recursive) 
    {
        Directory.Delete(FullPath, OriginalPath, recursive, true);
    }
票数 2
EN

Stack Overflow用户

发布于 2012-12-14 19:10:02

第一个代码示例将只删除文件夹“C:\user\user\Desktop\1”和“C:\user\user\Desktop\2”,而不管参数中传递的是什么。

第二个代码示例将删除参数指定目录中的所有文件和文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13884781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档