On Wednesday, 6 December 2017 at 15:04:55 UTC, Andrea Fontana wrote:
On Wednesday, 6 December 2017 at 14:49:48 UTC, Vino wrote:

Hi Andrea,

Thank you very much, as your code is pretty good for our scenario, just one request, the above is a part of our main code where we have many such sub code and all of our sub code use the container array(std.container.array) rather than standard array(std.array), so can you please guide me on how to implement the same code using the container array.

From,
Vino.B.

Just use Array! constructor.

auto mSize () {
        string FFs = "/home/andrea/Scaricati";
        
   return
   Array!(Tuple!(string,string))(
   dirEntries(FFs, SpanMode.shallow)
   .filter!(a => a.isDir)
.map!(a => tuple(a.name, a.dirEntries(SpanMode.depth).filter!(a=>a.isFile).map!(a => a.size).sum))
   .filter!(a => a[1] > 1024*1024*30)
   .map!(a => tuple(a[0], a[1].to!string))
   );
}

Hi Andrea,

I test your code, initially it error ed out stating "patch does not exist", the reason for this error is that the length of the path is more than 256 , so added the UNC path to the code as below.

auto mSize () {
string FFs = "C:\Temp\BACKUP";
ulong SGb = 1024 * 1024;
int SizeDir = 10;

return Array!(Tuple!(string,real))(
dirEntries(join(["\\\\?\\", FFs]), SpanMode.shallow).filter!(a => a.isDir) .map!(a => tuple(a.name, a.dirEntries(SpanMode.depth).filter!(a=>a.isFile)
 .map!(a => a.size).sum)).filter!(a => a[1] >  (SGb * SizeDir))
 .map!(a => tuple(a[0], ((a[1].to!real)/ SGb ))));
}

The output of the code is as below
\\?\C:\Temp\BACKUP\dir1                                 34.90
\\?\C:\Temp\BACKUP\dir2                                 36.18

So how do we print the output without UNC path
C:\Temp\BACKUP\dir1                                 34.90
C:\Temp\BACKUP\dir2                                 36.18

From,
Vino.B



Reply via email to