Erlang Language
Bestand I / O
Zoeken…
Uit een bestand lezen
Laten we aannemen dat u een bestand lyrics.txt hebt dat de volgende gegevens bevat:
summer has come and passed
the innocent can never last
wake me up when september ends
Lees het hele bestand tegelijk
Door het file:read_file(File)
, kunt u het hele bestand lezen. Het is een atomaire operatie:
1> file:read_file("lyrics.txt").
{ok,<<"summer has come and passed\r\nthe innocent can never last\r\nWake me up w
hen september ends\r\n">>}
Lees één regel tegelijk
io:get_line
leest de tekst tot de nieuwe regel of het einde van het bestand.
1> {ok, S} = file:open("lyrics.txt", read).
{ok,<0.57.0>}
2> io:get_line(S, '').
"summer has come and passed\n"
3> io:get_line(S, '').
"the innocent can never last\n"
4> io:get_line(S, '').
"wake me up when september ends\n"
5> io:get_line(S, '').
eof
6> file:close(S).
ok
Lees met de willekeurige toegang
file:pread(IoDevice, Start, Len)
leest evenveel van Start
als Len
van IoDevice
.
1> {ok, S} = file:open("lyrics.txt", read).
{ok,<0.57.0>}
2> file:pread(S, 0, 6).
{ok,"summer"}
3> file:pread(S, 7, 3).
{ok,"has"}
Naar een bestand schrijven
Schrijf één regel tegelijk
Open een bestand met de write
en gebruik io:format/2
:
1> {ok, S} = file:open("fruit_count.txt", [write]).
{ok,<0.57.0>}
2> io:format(S, "~s~n", ["Mango 5"]).
ok
3> io:format(S, "~s~n", ["Olive 12"]).
ok
4> io:format(S, "~s~n", ["Watermelon 3"]).
ok
5>
Het resultaat is een bestand met de naam fruit_count.txt met de volgende inhoud:
Mango 5
Olive 12
Watermelon 3
Merk op dat het openen van een bestand in de schrijfmodus het zal aanmaken, indien het nog niet bestaat in het bestandssysteem.
Merk ook op dat het gebruik van de write
met file:open/2
het bestand zal afkappen (zelfs als u er niets in schrijft). Om dit te voorkomen, opent u het bestand in de modus [read,write]
of [append]
.
Schrijf het hele bestand in één keer
file:write_file(Filename, IO)
is de eenvoudigste functie om een bestand in één keer te schrijven. Als het bestand al bestaat, wordt het overschreven, anders wordt het gemaakt.
1> file:write_file("fruit_count.txt", ["Mango 5\nOlive 12\nWatermelon 3\n"
]).
ok
2> file:read_file("fruit_count.txt").
{ok,<<"Mango 5\nOlive 12\nWatermelon 3\n">>}
3>
Schrijf met willekeurige toegang
Voor het schrijven van willekeurige toegang wordt file:pwrite(IoDevice, Location, Bytes)
gebruikt. Als u een string in het bestand wilt vervangen, is deze methode handig.
Laten we aannemen dat u "Olive 12" wilt wijzigen in "Apple 15" in het hierboven gemaakte bestand.
1> {ok, S} = file:open("fruit_count.txt", [read, write]).
{ok,{file_descriptor,prim_file,{#Port<0.412>,676}}}
2> file:pwrite(S, 8, ["Apple 15\n"]).
ok
3> file:read_file("fruit_count.txt").
{ok,<<"Mango 5\nApple 15\nWatermelon 3">>}
4> file:close(S).
ok
5>