I/O extensions for common tasks

Andrew Pennebaker andrew.pennebaker at gmail.com
Mon Dec 10 15:08:09 UTC 2018


On Monday, 10 December 2018 at 02:06:26 UTC, Basile B. wrote:
> On Monday, 10 December 2018 at 01:51:56 UTC, Andrew Pennebaker 
> wrote:
>> The stdlib has all the low-level components we need to do lots 
>> of different workflows. However, there are a few gaps in the 
>> API in terms of high level, common tasks. For example, the API 
>> can read an entire Unicode text file to a string for a given 
>> filename, but not for a given File object!
>>
>> For now, I am accomplishing this with:
>>
>> // Convenience function for reading an entire UTF-8 file.
>> string readUTF8(File f) {
>>     string s;
>>
>>     foreach(ubyte[] buf; f.byChunk(1024)) {
>>         s ~= buf;
>>     }
>>
>>     return s;
>> }
>>
>
> There's more simple:
>
>
>     auto wholeFile = f.rawRead(new char[](f.size));
>
>
> Note that this kind of question should rather go there: 
> https://forum.dlang.org/group/learn

For pipedProcess streams, the size is basically infinite until 
the process ends, so that leads to an out of memory error. Again, 
I think a convenience function would be good to include, to avoid 
these kinds of mistakes!


More information about the Digitalmars-d mailing list