Buscar..


Leyendo de un archivo

Supongamos que tiene un archivo lyrics.txt que contiene los siguientes datos:

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

Lee el archivo completo a la vez

Al usar file:read_file(File) , puedes leer el archivo completo. Es una operación atómica:

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

Lee una línea a la vez

io:get_line lee el texto hasta la nueva línea o el final del archivo.

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

Leer con el acceso aleatorio

file:pread(IoDevice, Start, Len) lee desde Start tanto como Len desde 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"}       

Escribiendo en un archivo

Escribe una línea a la vez

Abra un archivo con el modo de write y use 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>

El resultado será un archivo llamado fruit_count.txt con el siguiente contenido:

Mango 5
Olive 12
Watermelon 3

Tenga en cuenta que abrir un archivo en modo de escritura lo creará, si aún no existe en el sistema de archivos.

Tenga en cuenta también que el uso de la opción de write con file:open/2 truncará el archivo (incluso si no escribe nada en él). Para evitar esto, abra el archivo en modo [read,write] o [append] .

Escribe todo el archivo a la vez

file:write_file(Filename, IO) es la función más simple para escribir un archivo a la vez. Si el archivo ya existe, se sobrescribirá, de lo contrario se creará.

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>

Escribir con acceso aleatorio

Para escritura de acceso aleatorio, se file:pwrite(IoDevice, Location, Bytes) . Si desea reemplazar alguna cadena en el archivo, este método es útil.

Supongamos que desea cambiar "Olive 12" a "Apple 15" en el archivo creado anteriormente.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow