не могу прочитать текстовый файл.
ЧТЕНИЕ: входной поток #1=# достиг своего конца [Условие типа SYSTEM::SIMPLE-END-OF-FILE]
что означает "достиг своего конца".
не могу прочитать текстовый файл.
ЧТЕНИЕ: входной поток #1=# достиг своего конца [Условие типа SYSTEM::SIMPLE-END-OF-FILE]
что означает "достиг своего конца".
Ознакомьтесь с документацией в HyperSpec:
http://www.lispworks.com/documentation/HyperSpec/Body/f_rd_rd.htm
По умолчанию READ
, READ-CHAR
и подобные функции будут сигнализировать о состоянии типа END-OF-FILE
, когда больше нет данных для чтения из потока.
Если вы хотите, чтобы вместо этого он возвращал конкретное значение при попытке чтения после конца потока, вам нужно передать nil
в параметр eof-error-p
функции, а значение, символ или ключевое слово - в параметр eof-value
функции. функция; это данные, которые вы получите, когда будет достигнут конец файла/потока.
Например, если вы читали символы по отдельности из фрагмента текста:
(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)))
READ
анализирует прочитанный текст в объекты Лиспа, и если текст недействителен, будет сообщено об ошибке.
- person Jorge Gajon; 15.12.2009
Это означает, что вы прочитали все данные, доступные в том месте, где вы открыли поток, а затем попытались прочитать еще немного.