gpt4 book ai didi

c# - 在 C# 中查找包含超过 20,000 个文件的目录中的文件的最快方法

转载 作者:IT王子 更新时间:2023-10-29 04:49:00 26 4
gpt4 key购买 nike

我有一项工作每晚都会从根目录下有超过 20,000 个子文件夹的目录中提取 xml 文件。结构如下所示:

rootFolder/someFolder/someSubFolder/xml/myFile.xml
rootFolder/someFolder/someSubFolder1/xml/myFile1.xml
rootFolder/someFolder/someSubFolderN/xml/myFile2.xml
rootFolder/someFolder1
rootFolder/someFolderN

所以看看上面的内容,结构总是一样的——一个根文件夹,然后是两个子文件夹,然后是一个 xml 目录,然后是 xml 文件。我只知道 rootFolder 和 xml 目录的名称。

下面的代码遍历了所有的目录,速度极慢。关于如何优化搜索的任何建议,尤其是在目录结构已知的情况下?

string[] files = Directory.GetFiles(@"\\somenetworkpath\rootFolder", "*.xml", SearchOption.AllDirectories);

最佳答案

与其执行 GetFiles 并进行强力搜索,不如使用 GetDirectories,首先获取“第一个子文件夹”的列表,遍历这些目录,然后对子文件夹重复该过程,遍历它们,最后寻找xml文件夹,最后搜索.xml文件。

现在,至于性能,速度会有所不同,但首先搜索目录,然后再访问文件应该会有很大帮助!

更新

好的,我做了一些快速测试,您实际上可以比我想象的更优化它。

以下代码片段将搜索目录结构并在整个目录树中查找所有“xml”文件夹。

string startPath = @"C:\Testing\Testing\bin\Debug";
string[] oDirectories = Directory.GetDirectories(startPath, "xml", SearchOption.AllDirectories);
Console.WriteLine(oDirectories.Length.ToString());
foreach (string oCurrent in oDirectories)
Console.WriteLine(oCurrent);
Console.ReadLine();

如果将其放入测试控制台应用程序中,您将看到它输出结果。

现在,一旦你有了这个,只需在每个找到的目录中查找你的 .xml 文件。

关于c# - 在 C# 中查找包含超过 20,000 个文件的目录中的文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/714101/

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