Suche…


Lesen aus einer Datei

Nehmen wir an, Sie haben eine Datei lyrics.txt , die folgende Daten enthält:

summer has come and passed
the innocent can never last
wake me up when september ends

Lesen Sie die gesamte Datei gleichzeitig

Mit file:read_file(File) können Sie die gesamte Datei lesen. Es ist eine atomare Operation:

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">>}

Lesen Sie jeweils eine Zeile

io:get_line liest den Text bis zum Zeilenvorschub oder zum Dateiende.

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

Lesen Sie mit dem Direktzugriff

file:pread(IoDevice, Start, Len) liest von Start so viel wie Len von 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"}       

In eine Datei schreiben

Schreiben Sie jeweils eine Zeile

Öffnen Sie eine Datei mit dem write und verwenden Sie 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>

Das Ergebnis ist eine Datei namens fruit_count.txt mit folgendem Inhalt:

Mango 5
Olive 12
Watermelon 3

Wenn Sie eine Datei im Schreibmodus öffnen, wird sie erstellt, sofern sie nicht bereits im Dateisystem vorhanden ist.

Beachten Sie auch, dass bei Verwendung der Option write mit file:open/2 die Datei abgeschnitten wird (auch wenn Sie nichts hineinschreiben). Um dies zu verhindern, öffnen Sie die Datei im Modus [read,write] oder [append] .

Schreiben Sie die gesamte Datei auf einmal

file:write_file(Filename, IO) ist die einfachste Funktion zum gleichzeitigen Schreiben einer Datei. Wenn die Datei bereits vorhanden ist, wird sie überschrieben, andernfalls wird sie erstellt.

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>

Schreibe mit wahlfreiem Zugriff

Für das Schreiben mit wahlfreiem Zugriff wird file:pwrite(IoDevice, Location, Bytes) verwendet. Wenn Sie einen String in der Datei ersetzen möchten, ist diese Methode hilfreich.

Angenommen, Sie möchten "Olive 12" in "Apple 15" in der oben erstellten Datei ändern.

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow