2009-12-15 3 views

Répondre

2

Cela signifie que vous avez lu toutes les données disponibles à l'emplacement où vous avez ouvert le flux, puis vous avez essayé d'en lire plus.

4

Vérifiez la documentation à l'hyperspec:

http://www.lispworks.com/documentation/HyperSpec/Body/f_rd_rd.htm

Par défaut, READ, READ-CHAR et fonctions similaires signaleront une condition de type END-OF-FILE quand il n'y a plus de données à lire à partir du flux. Si vous voulez renvoyer à la place une valeur spécifique en essayant de lire après la fin du flux, vous devez passer un nil au paramètre eof-error-p de la fonction, et une valeur, un symbole ou un mot-clé au eof-value paramètre de la fonction; ce sont les données que vous obtiendrez à la fin du fichier/flux.

Par exemple, si vous lisez les caractères individuellement à partir d'un morceau de texte:

(with-open-file (s somefile :direction :input) 
    (do ((c (read-char s nil :eof) 
      (read-char s nil :eof))) 
    ((eql c :eof) 'done) 
    (process-char c))) 
+1

Notez également que 'READ' analyse le texte lu en objets Lisp, et si le texte n'est pas valide, une condition d'erreur sera signalée. –

Questions connexes