I/O extensions for common tasks

Steven Schveighoffer schveiguy at gmail.com
Tue Dec 11 14:15:13 UTC 2018


On 12/11/18 12:24 AM, Paul Backus wrote:
> On Monday, 10 December 2018 at 14:44:56 UTC, Steven Schveighoffer wrote:
>> On 12/9/18 9:37 PM, Seb 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!
>>>>
>>>> [...]
>>>
>>> What's wrong with readText:
>>>
>>> https://dlang.org/phobos/std_file.html#readText
>>
>> Problem statement is that given a File object, how do you read all the 
>> data out? :) std.file doesn't help there.
> 
> As far as I know, the best answer is 
> `file.byLineCopy(Yes.keepTerminator).joiner` if you want characters, and 
> `file.byChunk(...).joiner` if you want ubytes.

Well, I would say the original request wants it in a string, so we are 
focusing on characters.

However, this does NOT work:

file.byLine(Yes.keepTerminator).joiner.array;

Because it will make an array of dchars.

What you really want is this:

cast(string)file.byChunk(4096).joiner.array;

-Steve


More information about the Digitalmars-d mailing list