Directory recursive walking
drug
drug2004 at bk.ru
Thu Jan 14 15:55:24 UTC 2021
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))
```
More information about the Digitalmars-d-learn
mailing list