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>


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow