On Monday, 17 March 2014 at 20:39:45 UTC, anonymous wrote:
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.
I see. I raised a bug on this issue
https://d.puremagic.com/issues/show_bug.cgi?id=12391 Perhaps
there are some other libraries ideas that can be used.