не може да чете текстов файл.
ПРОЧЕТЕТЕ: входен поток #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
анализира прочетения текст в Lisp обекти и ако текстът не е валиден, ще бъде сигнализирано състояние на грешка.
- person Jorge Gajon; 15.12.2009
Това означава, че сте прочели всички налични данни на мястото, към което сте отворили потока, и след това сте се опитали да прочетете още.