32.Функционалы.Массивы.Работа с файлами.Входные и выходные потоки. , 10/09/2007

Определение выходных и входных потоков.
Для открытия файла для записи задается его имя, производится операция open и указывается направление output:
(setq our-output-stream
(open "sesame" :direction :output))
Зададим
(setq s "e)
Можно вывести это значение в файл
(princ s our-output-stream);
Можно занести список
(print "(a b c d) our-output-stream)
Чтобы правильно закрыть поток необходимо в конец поместить
(terpri our-output-stream)
Затем файл закрывается
(close our-output-stream)
Можно посмотреть информацию в файле.
Откроем файл для чтения:
(setq our-input-stream
(open "sesame" :direction :input))
Прочитать информацию
(read our-input-stream)
Закроем файл
(close our-input-stream)
Чтение символов из файла.
Предположим, что в файле хранится символьная информация, необходимая нам для обработки. Причем нас интересует каждый символ в файле. До сих пор мы могли вводить только атомы, числа и списки.
Для чтения символов из файла будем использовать функцию
(READ-CHAR <входной поток>)
Данная функция позволяет читать печатные символы (CHAR) из файла. В качестве значения получается десятичное представление кода символа. Используйте эту функцию для посимвольного ввода информации из файла для ее последующего анализа
Определим
(setq our-input-stream
(open "picture.spl" :direction :input))
Для чтения символа используем
(read-char our-input-stream)
Для восстановления содержимого файла применяется перекодировка
(setq x (read-char our-input-stream)
То содержимое x можно показать
(cond (( = x 43) (prin1"+))
(( = x 45) (prin1 "-))
(( = x 10 ) (terpri)))
Можно представить информацию без искажений, если использовать цикл
(loop (progn (setq x
(read-char our-input-stream) )
(cond (( = x 43) (prin1"+))
(( = x 45) (prin1 "-))
(( = x 10 ) (terpri))))))
Закрытие входного потока.
(close our-input-stream)
Для поиска конца файла можно анализировать ошибку чтения, но лучше знать длину файла до начала работы с ним.
Автор: it-library, количество прочтений: 4797 Наверх
Ци...
СO...
В ...
Пр...
Не...
Тр...