Recherche…


Lecture d'un fichier

Supposons que vous avez un fichier lyrics.txt qui contient les données suivantes:

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

Lire l'intégralité du fichier à la fois

En utilisant file:read_file(File) , vous pouvez lire le fichier entier. C'est une opération atomique:

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

Lire une ligne à la fois

io:get_line lit le texte jusqu'à la nouvelle ligne ou la fin du fichier.

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

Lire avec l'accès aléatoire

file:pread(IoDevice, Start, Len) lit à partir de Start , autant que Len de 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"}       

Ecrire dans un fichier

Ecrire une ligne à la fois

Ouvrez un fichier en mode write et utilisez 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>

Le résultat sera un fichier nommé fruit_count.txt avec le contenu suivant:

Mango 5
Olive 12
Watermelon 3

Notez que l'ouverture d'un fichier en mode écriture le créera, s'il n'existe pas déjà dans le système de fichiers.

Notez également que l'utilisation de l'option write avec file:open/2 tronquera le fichier (même si vous n'y écrivez rien). Pour éviter cela, ouvrez le fichier en mode [read,write] ou [append] .

Écrivez le fichier entier en une fois

file:write_file(Filename, IO) est la fonction la plus simple pour écrire un fichier à la fois. Si le fichier existe déjà, il sera écrasé, sinon il sera créé.

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>

Ecrire avec un accès aléatoire

Pour l'écriture à accès aléatoire, le file:pwrite(IoDevice, Location, Bytes) est utilisé. Si vous souhaitez remplacer une chaîne dans le fichier, cette méthode est utile.

Supposons que vous souhaitiez remplacer "Olive 12" par "Apple 15" dans le fichier créé ci-dessus.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow