equivalent of seek'ing in a file?

Bengt Kleberg <>
Thu Aug 29 13:42:01 CEST 2002


greetings,

can i position the 'cursor' when read/writing to a file?

it seems (test included below) that after file:open( File, [read, write] ),
io:fwrite() will put characters in the beginning of the file. until i
have made the first io:get_line(). then characters will start writing
at the end of the file.

is there some rule/documentation describing this?


bengt
-------------- next part --------------
#! /usr/bin/env escript

-export([main/1]).


main( Args ) ->
	true = code:add_patha( '/home/eleberg/private/erlang/src' ),
	File = file( Args ),
	fill_file( File ),
	display( File ),
	readwrite( File ),
	display( File ),
	fill_file( File ),
	writeread( File ),
	display( File ),
	halt().
	
fill_file( File ) ->
	{ok, Io} = file:open( File, [write] ),
	io:fwrite( Io, "line o1~n", [] ),
	io:fwrite( Io, "line o2~n", [] ),
	io:fwrite( Io, "line o3~n", [] ),
	file:close( Io ).
	
readwrite( File ) ->
	{ok, Io} = file:open( File, [read, write] ),
	io:fwrite( "~s", [io:get_line( Io, '' )] ),
	io:fwrite( Io, "line w1~n", [] ),
	io:fwrite( "~s", [io:get_line( Io, '' )] ),
	file:close( Io ).
	
writeread( File ) ->
	{ok, Io} = file:open( File, [read, write] ),
	io:fwrite( Io, "line w1~n", [] ),
	io:fwrite( "~s", [io:get_line( Io, '' )] ),
	io:fwrite( Io, "line w2~n", [] ),
	file:close( Io ).
	

display( File ) ->
	io:fwrite( "~nFile ~p~n", [File] ),
	{ok, Bin} = file:read_file( File ),
	io:format( "~s~n", [binary_to_list( Bin )] ).

file( [] ) ->
	"/tmp/afile";
file( [File] ) ->
	File.


More information about the erlang-questions mailing list