On 1/14/21 6:46 PM, dog2002 wrote:
I need to make some operations with all the files in a directory and
subdirectories. Currently, I do it like this:
import std;
void DirIteration(string path) {
try {
foreach(entry; dirEntries(path, SpanMode.shallow, false)) {
//SpanMode.shallow allows skip directories if any error happens
if (entry.isFile && !entry.isSymlink)
writeln(entry); //Or something instead of this
if (entry.isDir)
DirIteration(entry);
}
}
catch (Throwable) {}
}
void main()
{
DirIteration("C:\\Users\\angrypuppy\\MyDir");
}
But this method consumes a huge amount of memory (up to 4 GB and more).
Is there a more appropriate way to walk directories recursively that
does not consume a lot of memory?
DirEntry is a struct. First of all I would try this:
```D
foreach(ref entry; dirEntries(path, SpanMode.shallow, false))
```