On Monday, 17 March 2014 at 09:18:36 UTC, Spacen Jasset wrote:
While trying to use dirEntries range with foreach I encountered a seemingly unsurmountable problem. The problem is that an execption is thrown while calling .front() on the range that dirEntries returnes, which seems to mean it's impossible to use it with a for loop if you exepect any sort of 'access denied' or other file exception - which will be quite common. e.g. in c:\windows

Is there any way to fix the foreach loop version (a)


(a) Can't make this work
 foreach (DirEntry e; entries) {

    }
std.file.FileException@std\file.d(2262): c:/windows\CSC\v2.0.6: Access is denied


(b)This works
    auto entries = dirEntries(path, spanMode);
    while (!entries.empty) {
        try {
            DirEntry e = entries.front();
            //...
            entries.popFront();
        } catch (FileException e) {
            writeln("Skipping something");
        }
    }

b doesn't work in the general case, either. dirEntries throws
immediately when the very first entry is not accessible.

Reply via email to