迭代文件夹和子文件夹的最佳方式 [英] Best way to iterate folders and subfolders
本文介绍了迭代文件夹和子文件夹的最佳方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
迭代文件夹和子文件夹以获取从指定位置开始的每个文件夹中的文件大小、文件总数和文件夹总大小的最佳方法是什么?
What's the best way to iterate folders and subfolders to get file size, total number of files, and total size of folder in each folder starting at a specified location?
推荐答案
使用 目录.GetFiles().该页面底部包含一个完全递归的示例.
Use Directory.GetFiles(). The bottom of that page includes an example that's fully recursive.
注意:在使用 .NET 4 及更高版本时,请使用下面的 Chris Dunaway 的答案以获得更现代的方法.
Note: Use Chris Dunaway's answer below for a more modern approach when using .NET 4 and above.
// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;
public class RecursiveFileProcessor
{
public static void Main(string[] args)
{
foreach(string path in args)
{
if(File.Exists(path))
{
// This path is a file
ProcessFile(path);
}
else if(Directory.Exists(path))
{
// This path is a directory
ProcessDirectory(path);
}
else
{
Console.WriteLine("{0} is not a valid file or directory.", path);
}
}
}
// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
public static void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
ProcessFile(fileName);
// Recurse into subdirectories of this directory.
string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach(string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
// Insert logic for processing found files here.
public static void ProcessFile(string path)
{
Console.WriteLine("Processed file '{0}'.", path);
}
}
这篇关于迭代文件夹和子文件夹的最佳方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文