[erlang-questions] Bug or feature or my ignorance?

Valentin Micic v@REDACTED
Sun Nov 1 18:17:50 CET 2015


In both cases you are opening file for writing.
Second time you should consider read/write in order to avoid overwriting the content.

V/

On 01 Nov 2015, at 7:14 PM, Joe Armstrong wrote:

> Is this a bug or feature or just my ignorance?
> 
> I have a file which I open for write and then I do a
> random access pwrite at byte 11 of the file
> but bytes 0..10 get overwritten.
> 
> Here's the example:
> 
> 
> 
> test() ->
>    %% make a file with 10 bytes
>    {ok, S} = file:open("tmp",[raw,write,binary]),
>    file:pwrite(S,0,<<0,1,2,3,4,5,6,7,8,9>>),
>    file:close(S),
>    %% reopen file and write from byte 11 onwards
>    {ok, S1} = file:open("tmp",[raw,write,binary]),
>    file:pwrite(S1,10,<<10,11,12,13,14,15>>),
>    file:close(S1),
>    file:read_file("tmp").
> 
> 
>> bug:test().
> {ok,<<0,0,0,0,0,0,0,0,0,0,10,11,12,13,14,15>>}
> 
> If I open the file in mode [raw,write,binary,append]
> Then file beginning is not overwritten.
> 
> So opening an existing file for writing and writing to the end of file
> messes up the portion of the file that I have not written to.
> 
> Is this the expected behaviour?
> 
> /Joe
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list