ne peut pas lire le fichier texte.Mystifié par la condition de fin de fichier dans le lisp commun
LIRE: flux d'entrée # 1 = # a atteint sa fin [Etat du type de système :: SIMPLE-FIN DE FICHIER]
quels moyens "a atteint sa fin."
ne peut pas lire le fichier texte.Mystifié par la condition de fin de fichier dans le lisp commun
LIRE: flux d'entrée # 1 = # a atteint sa fin [Etat du type de système :: SIMPLE-FIN DE FICHIER]
quels moyens "a atteint sa fin."
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.
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)))
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. –
Quand cela se produit? Quel fichier essayez-vous de lire? – itowlson