[erlang-questions] file:read_file won't read from /proc

Dmitry Belayev rumata-estor@REDACTED
Fri Mar 5 15:58:55 CET 2010


Sorry, I was wrong.
It isn't general practice to [Acc | Bytes] but surely it works.

Jachym Holecek wrote:
> # Martin DeMello 2010-03-05:
>   
>> On Thu, Mar 4, 2010 at 9:37 PM, Jachym Holecek <freza@REDACTED> wrote:
>>
>>     
>>> The read_file/1 thing check file size and then attempts to read exactly
>>> that many bytes. The size of /proc/cpuinfo is zero[*], thus read_file/1
>>> correctly reads zero bytes and represents the result with empty binary.
>>>       
>> Okay, that makes sense. So what would the best way to read "files" in
>> /proc be? Is there any standard erlang way to read a stream till you
>> get an EOF?
>>     
>
> Not sure if there's such function in standard libraries, you can always
> go with a utility function much in the spirit of your original example:
>
>   raw_read_file(Path) ->
>       {ok, File} = file:open(Path, [read, binary]),
>       raw_read_loop(File, []).
>
>   raw_read_loop(File, Acc) ->
>       case file:read(File, 1024) of
>         {ok, Bytes} ->
>             raw_read_loop(File, [Acc | Bytes]);
>         eof ->
> 	    file:close(File),
>             iolist_to_binary(Acc);
> 	{error, Reason} ->
> 	    file:close(File),
> 	    erlang:error(Reason)
>       end.
>
> Regards,
> 	-- Jachym
>
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:erlang-questions-unsubscribe@REDACTED
>
>
>   



More information about the erlang-questions mailing list