我正在尝试枚举目录下的文件路径。这个目录有很多子目录,即使我正在寻找一个特定的文件,枚举也需要很多时间。所以试图优化它。
这是结构:
主要 - >这是我开始寻找的地方
string path = "something main here";
Directory.EnumerateFiles(path , "grouptest.log", SearchOption.AllDirectories);
现在在主目录中,我知道所有grouptest.log都存在。
main -> sampleDir1 -> textDir1 -> StoryDir
-> grouptest.log
-> textDir2 -> StoryDir
-> grouptest.log
sampleDir2 -> textDir1 -> StoryDir
-> grouptest.log
它总是存在两个级别。在Main \ SampleDirX \ textDirX \ grouptest.log下。它根本不存在于StoryDir下,所以我们不必看这里。
我没有找到任何方法从EnumerateFiles()或GetFiles()中排除模式,并且无法在搜索模式中使用正则表达式。
尝试了方法:
使用
获取main的子目录Directory.GetDirectories(path, "*", SearchOption.AllDirectories).Where(dir => !Path.GetFullPath(dir).Contains(@"\StoryDir")).ToList();
然后阅读每个subDir
Directory.EnumerateFiles(subDir , "grouptest.log", SearchOption.TopDirectoryOnly);
还需要很长时间。
如何在枚举文件之前指定我想要排除要读取的目录?
EnumerateFiles并在文件路径上运行where子句仍然需要很长时间。我希望能够首先排除StoryDir路径,或者只看两个级别。
答案 0 :(得分:1)
for (i = 0; i < 5; i++, i++, i++, i++, i++)
...