Par exemple, j'ai un fichier TXT avec 10 chaîne de texte. Comment puis-je lire les 5 premières chaînes de ce texte avec Erlang? P>
merci. p>
3 Réponses :
Utilisez le module IO d'Erlang.
io: lu (fd, ''). p>
où fd est la poignée de fichier. p>
aussi s'il vous plaît prenez aussi la recherche de l'Erlang Doc Pour la syntaxe correcte. p>
Voici un code rugueux p>
Vous pouvez utiliser un comptoir si vous souhaitez traiter seulement 10 lignes
p> p>
Je vois que vous avez mentionné la chaîne ou que vous avez des lignes que vous avez destinées à dire ?? S'il s'agit de chaîne..then lisez la première ligne et la jetez-la à l'aide du module de chaîne d'Erlang ... ou utilisez le style de programmation fonctionnel classique classique :)
Ceci lit les termes, pas des chaînes :-) "lit un terme terme code> à partir de l'entrée standard ( iodevice code>), en l'invite à l'invite code>".
Vous voulez probablement une combinaison de Fichier: Ouvrir / 2 Code> et Fichier: read_line / 1 code> avec tampon activé.
une rime: p> fichier source: p> Exemple Exemple: P> brut code>, dans modes code>, transmis au fichier : ouvrir / 2 code>, permet un accès plus rapide à un fichier, car aucun processus Erlang n'est nécessaire pour Manipulez le fichier. p> 5> lists:map(fun(X) -> string:strip(X, right, $\n) end, Lines).
["Mary had a little lamb,","little lamb, little lamb,",
"Mary had a little lamb,",
"whose fleece was white as snow.",
"And everywhere that Mary went,"]
6>
Une autre solution, N_Times peut être utilisé ailleurs:
-module(n_times).
-export([test/0]).
test() ->
io:format("~p~n", [n_lines("n_times.erl", 5)]).
n_lines(FileName, N) ->
{ok, FileDev} = file:open(FileName, [raw, read, read_ahead]),
try
n_times(fun() -> {ok, L} = file:read_line(FileDev), L end, N)
after
file:close(FileDev)
end.
n_times(F, N) ->
n_times(F, N, []).
n_times(_, 0, A) ->
lists:reverse(A);
n_times(F, N, A) ->
n_times(F, N-1, [F()|A]).
@OP: Vous êtes invité à accepter une réponse, si l'une des réponses publiait votre question et que vous en êtes satisfait.
@Arunmu: Un utilisateur verra le commentaire, ajouté à son poste (elle), même s'il n'y a pas de
@ code> devant le Nick. ;-)