Файловый ввод/вывод
Тема доклада: Файловый ввод/вывод.
Функциональный язык программирования Лисп поддерживает широкие возможности для работы с файлами. При этом вводится понятие потока с которым связан файл с одной стороны и какой-то символ с другой. Поток представляет собой некий абстрактный объект с которым мы можем работать не углубляясь в аппаратную и программную реализацию работы с данными.
Рассмотрим основные функции для работы с файлами:
OPEN filespec &;key direction element-type if-exists if-does-not-exist external-format
Функция создает, открывает и возвращает поток файла заданного в filespec.
Filespec - путь к файлу
Direction - одно из:input, :output, :io, или :probe. По умолчанию:input. Режим открытия файла (чтение, запись, чтение/запись, поток создан но закрыт)
Element-type - тип данных с которыми поддерживает работу файл. По умолчанию Character.
If-exists - поведение если файл уже существует (:error, :new-version, :rename, :rename-and-delete, :overwrite, :append, :supersede).
If-does-not-exist - поведение если файл не существует (:error, :create).
External-format - Внешний указатель формата файла. The default is :default.
Возвращает поток (stream).
(setq s (open "example. txt" :direction :io)); создает файл дле чтения/записи и связывает с ним символ s.
LOAD filespec
Эта функция загружает файл выражений и выполняет эти выражения. filespec - это строковая константа, которая представляет собой имя файла может включать префикс директории, например "/function/test1". Если операция успешно завершина, LOAD возвращает имя последней функции, определенной в файле. Если операция не выполнена, LOAD возвращает имя файла в виде строкового выражения.
WRITE-BYTE byte stream
Записывает байт в выходной поток. Тип данных должен быть изменен на unsigned-byte;
_(with-open-file (s "temp-byte" :direction :output :element-type 'unsigned-byte)(write-byte 101 s))
=> 101 ; в файле символ 'е'
WRITE-CHAR char stream
Записывает символ в выходной поток;
_(with-open-file (s "temp" :direction :output)(write-char #B s))
Р B
WRITE-LINE string &;optional stream &;key start end
Записывает строку (ключевые слова :start и :end позволяют задавать диапазон записываемой строки (отсчет с нуля)); производит перевод каретки на новую строку.
_(with-open-file (s "temp" :direction :output )(write-line "Hello, world" s))
=>"Hello, world"
WRITE-STRING string &;optional stream &;key start end
Записывает строку но не добавляет новую линию в выходной поток;
_(with-open-file (s "temp" :direction :output )(write-string "Hello, world" s :start 3 :end 6))
=>"lo,"
READ-BYTE stream &;optional eof-error-p eof-value
Читает байт с входного потока.
Eof-error-p - по умолчанию nil. Oбобщенная булева переменная (nil - false, все остальное true).
Eof-value--признак конца файла.
_(with-open-file (s "temp-bytes" :element-type 'unsigned-byte)(read-byte s))
=>101
READ-CHAR &;optional stream eof-error-p eof-value recursive-p
Читает символ с входного потока. Возвращает (целое) ASCII код считываемого символа. Если не задано <описателя файла> и в буфере ввода клавиатуры нет символов, READ-CHAR ждет, чтобы вы ввели что-либо с клавиатуры (заканчивающееся RETURN). Hапример, добустим, что буфер клавиатуры пуст:
(read-char)
Будет ждать какого-либо ввода. Если вы набрали "АВС", завершив ввод RETURN, READ-CHAR возвратит 65 (код AS0CII буквы "А" (латинской)). Следующие три обращения к READ-CHAR возвратят 66,67 и 10 (переход на новую строку) соответственно. Если затем последует еще одно обращение к READ-CHAR, она будет ждать ввода;
_(with-open-file (s "temp-bytes")(read-byte s))
=>#e
READ-LINE &;optional stream eof-error-p eof-value recursive-p
Читает строку. READ-LINE возвращает nil, иначе она возвращает строковое значение, которое было считано. Hапример, допустим, что F - это разрешенный указатель открытого файла:
(read-line f)
Возвратит следующую введенную строку из файла или (если достигнут конец файла) nil.
PEEK-CHAR &;optional peek-type stream eof-error-p eof-value recursive-p
Читает символ с потока так, что он доступен для следующей операции чтения. Аргумент peek-type позволяет перескочить к пробелу (Т) или какомуто отдельному символу(a character); /* ??? */
UNREAD-CHAR character &;optional stream
Помещает символ назад на переднюю сторону входного потока, где он остается пока не прочитается снова;
LISTEN &;optional stream
Возвращает Т если данные доступны на входном потоке;
READ-CHAR-NO-HANG &;optional stream eof-error-p eof-value recursive-p
Если символ доступен на входном потоке, функция возвращает символ, иначе nil;
CLEAR-INPUT &;optional stream
Флеширует входной поток, если это нужно;
FINISH-OUTPUT &;optional stream
Флеширует выходной поток и ждет результата от адресата;
FORCE-OUTPUT &;optional stream
То же что и FINISH-OUTPUT но не ждет результата;
CLEAR-OUTPUT &;optional stream
Очистка буфера потока;
DELETE-FILE filespec
Удаляет файл;
_(with-open-file (s "delete-me. text" :direction :output :if-exists :error) (delete-file s)); создает и удаляет файл
=> T
FILE-POSITION &;optional stream
Возвращает текущую позицию в файле связанным с потоком srteam;
FILE-POSITION &;optional stream position-spec
Производит позиционирование в файле связанным с потоком srteam.
И возвращает Т если позиционирование удалость и NIL при неудаче;
(FILE-POSITION s 0) ; возврат к началу файла.
CLOSE &;optional stream
Закрывает поток.
Для работы с файлами можно использовать и функции PRINТ, PRINС, PRIN1 и READ. Приведем простенький пример:
; открываем поток для записи
- (setq out-stream (open "temp. txt" :direction :output)) (print 'abc out-stream) ;запись строки abc
ABC
(close out-stream)
T
; открываем поток для чтения
- (setq in-stream (open "temp. txt" :direction :input)) #
ABC
(close in-stream)
T
Похожие статьи
-
ОПЕРАТОР ВВОДА ДЛЯ ЧТЕНИЯ ФАЙЛА, ОПЕРАТОР ВЫВОДА - Язык программирования Паскаль
Оператор ввода для чтения файла обладает всеми свойствамии обычного оператора READ. Вкачестве параметров могут быть переменные; каждая переменная поучает...
-
Описание переменных, Способы ввода/вывода информации - Система поиска автобусных маршрутов
В программе описана и используется одна глобальная переменная Town: TTown. Данная переменная содержит список остановок и автобусных маршрутов. Остальные...
-
Для реализации устройства управления потребуются: генератор слов, логические элементы (И, ИЛИ, НЕ), счетчики и логический анализатор. Ниже приведены...
-
Конфигурация устройств ввода-вывода Турбо Паскаля - Программирование в среде Turbo Pascal
Результаты работы программы и исходные данные могут быть записаны в файлы на диске, с помощью специальных процедур работы с файлами прямо из программы. В...
-
В данном реферате рассматриваются основные принципы создания и форматирования документов с помощью одного из самых распространенных текстовых редакторов...
-
Клавиатура Сейчас основным широко распространенным устройством ввода информации в компьютер является клавиатура (клавишное устройство). Она реализует...
-
Вывод шаблонов матриц и векторов - Массивы, векторы и матрицы
Команда Matrices... (Матрицы) меню Insert (Вставка) обеспечивает задание векторов или матриц. Как известно, матрица является именованным объектом в виде...
-
Дайте классификацию технических средств ввода информации. - Компьютер и периферийные устройства
Устройства ввода преобразуют информацию в форму понятную машине, после чего компьютер может ее обрабатывать и запоминать. Устройства вывода переводят...
-
Правило копирования формул Рабочая книга Команды для работы с данными (ввод, редактирование, форматирование) Любая обработка информации начинается с ее...
-
Основными интересными на практике возможностями нейронных сетей являются такие: Существование быстрых алгоритмов обучения: нейронная сеть даже при сотнях...
-
"ВВОД И ОФОРМЛЕНИЕ ТЕКСТА" - Презентация "Принтеры"
Создавая презентацию с помощью Мастера автоформы, мы уже вводили текст непосредственно в слайд. Однако во многих случаях работать с текстом гораздо...
-
Подменю Transform (преобразования) меню Symbolics содержит раздел операций преобразования Fourier (Преобразование Фурье) -- выполнить прямое...
-
Как представлять непрерывную информацию?, Выводы - Информация и способы ее получения
Для представления непрерывной величины могут использоваться самые разнообразные физические процессы. В рассмотренном выше примере весы позволяют величину...
-
Объявим переменные как глобальные: Var Form1: TForm1; A, b, x : int64; // Самый большой целочисленный тип Implementation Код процедуры Click для кнопки...
-
Специальные манипуляторы. Кроме обычной мыши существуют и другие типы манипуляторов, например: трекболы, пенмаусы, инфракрасные и лазерные мыши. Трекбол...
-
На рисунке 1 представлен фрагмент электронной таблицы, в которой содержаться исходные данные для решения задачи. Рисунок 1 - Фрагмент электронной...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Выбор интерфейса Пользовательский интерфейс представляет собой совокупность программных и аппаратных средств, обеспечивающих взаимодействие пользователя...
-
Выведем в общем виде уравнение движения заданной динамической модели при помощи уравнений Лагранжа II рода. Полная кинетическая энергия: , Полная...
-
Описание Блок PIDFF подобный блока PID, но он еще дополнительный вход сигнала опережение. Пользователь может настроить блок PIDFF таким образом, что...
-
Правила ввода текста - Основы работы с системой MathCAD 2000 PRO
1. Введите знак двойной кавычки " на английском регистре - появится прямоугольник с курсором ввода. 2. С помощью раскрывающегося списка выбора шрифта на...
-
Блок модуля последовательного управления SCM (Sequential Control Module) представляет собой модуль-контейнер для последовательности блоков шагов STEP и...
-
Вывод - Высокоуровневые методы информатики и программирования
С помощью спроектированной системы управления базой данных можно осуществлять ввод справочной информации, такой как типы единиц измерения, сведения о...
-
Вывод - Разработка объектно-ориентированной модели информационной системы предприятия ЗАО "ХРОМТАН"
Технология автоматизации бизнес-процессов в применении к управлению предприятием связана с автоматизацией административного труда и направлена на...
-
Мы ознакомились с обязательным устройством вывода информации из компьютера - монитором. Рассмотрим теперь другие устройства выводы. Принтер Это широко...
-
Компонент вывода - Экспертные системы
Его действия основаны на применении правила вывода, обычно называемого модус поненс, суть которого состоит в следующем: пусть известно, что истинно...
-
В данной курсовой работе были рассмотрены варианты описания структуры работы системы для регистрации пассажиров в аэропортах у стойки регистрации на...
-
Проектирование и разработка сайта Средства разработки Язык гипертекстовой разметки HTML В Интернете сосредотачивается и передается достаточно большое...
-
Эксплуатационные расходы, Выводы - Администрирование параллельных процессов
Эксплуатационные расходы, связанные с функционированием ЛВС, определяются по формуле: ЗЭкс = ЗМз + ЗЭ + ЗЗп + ЗАм, (4.8) Где ЗМз - затраты на материалы и...
-
Выводы, Список литературы - Определенный интеграл с подынтегральной функцией
Полученное значение корня найдено с достаточной точностью: 0,0000001157 < Е = 0.00001 При реализации программы вычисление всех функций и численного...
-
1. Какой математической операции нет в Delphi? 2. Как изменить порядок выполнения операций Delphi? 3. В каком порядке выполняются операции одного...
-
В результате выполнения практической работы №1 были изучены возможности математического пакета MathCad в среде Windows с целью дальнейшего использования...
-
Выводы и рекомендации к сайту - Создание сайта
Хотя полного аналога проекта компании "Музыкальная компания BOOM", найти на белорусском рынке не удалось, все же были выведены общие критерии, актуальные...
-
Аналитический способ решения задачи №3 представляет собой проверку вычислений: - для лица Лушников В. В. сумма налога на дарение составит 0, т. к. сумма...
-
Дисплей (монитор). Позволяет вывести на экран алфавитно-цифровую или графическую информацию в удобном для чтения и контроля пользователем виде. В...
-
Выводы, Список литературы - Искусственный интеллект
Была разработана модель представления знаний на основе когнитивных карт, и реализовано программное обеспечение для имитационного моделирования поведения...
-
Существует несколько способов передачи цифрового сигнала от внешнего устройства в компьютер: через последовательный порт, через параллельный порт, через...
-
Изучить способы вывода на экран таблицы значений. - Циклические алгоритмы
Одномерные массивы в СИ Массив - некие упорядоченные данные одного типа. Смысл этой всей упорядоченности состоит в том что доступ к элементам происходит...
-
Ввод элементов векторов и матриц - Массивы, векторы и матрицы
Векторы и матрицы можно задавать путем ввода их элементов - индексированных переменных. Для указания подстрочных индексов после имени переменной вводится...
-
После ввода пользователем исходных данных компьютер должен их обработать в соответствии с заданной программой и вывести результаты в форме, удобной для...
Файловый ввод/вывод