我想删除一些临时文件的内容,所以我正在工作的小程序,为我删除他们。我有这两个代码示例,但我对以下内容感到困惑:
code1
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);
}
}发布于 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
[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
[ResourceExposure(ResourceScope.None)]
[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
public void Delete(bool recursive)
{
Directory.Delete(FullPath, OriginalPath, recursive, true);
}发布于 2012-12-14 19:10:02
第一个代码示例将只删除文件夹“C:\user\user\Desktop\1”和“C:\user\user\Desktop\2”,而不管参数中传递的是什么。
第二个代码示例将删除参数指定目录中的所有文件和文件夹。
https://stackoverflow.com/questions/13884781
复制相似问题