Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TRPP_uberdohuya.doc
Скачиваний:
14
Добавлен:
22.08.2019
Размер:
422.4 Кб
Скачать

Тема 23 Работа с файлами и динамическими базами данных в Прологе

Работа с файлами. Формирование термов. Обработка символов. Средства для реализации программы.

Работа с файлами

Текущим входным потоком данных по умолчанию является клавиатура (user). Предикат see(X) открывает файл X, если он еще не открыт, и файл X становится текущим входным потоком данных. Цель seeing(X) успешна, если имя текущего входного потока сопоставимо с X. Предикат seen закрывает текущий входной поток и переключается на интерактивный ввод данных от пользователя.

Текущим выходным потоком данных по умолчанию является экран (user). Предикат tell(X) открывает файл X, если он еще не открыт, и файл X становится текущим выход­ным потоком данных Цель telling(X) успешна, если имя текущего выходного потока сопоставимо с X. Предикат told закрывает текущий выходной поток и переключается на интерактивный вывод данных пользователю.

Выше перечислены классические предикаты, используемый в Эдинбургской нотации.

Следует отметить, что SWI-Пролог содержит избыточное множество встроенных предикатов для работы с файловой системой (часть которых представлена ниже), и даже поддерживает ряд команд, заимствованных из ОС Unix (например, вызов ls. - выдаст список всех файлов в текущей рабочей директории, а команда cd('../'). - сменит текущий рабочий каталог на его родительскую директорию).

Работа с файлами

Текущим входным потоком данных по умолчанию является клавиатура (user). Предикат see(X) открывает файл X, если он еще не открыт, и файл X становится текущим входным потоком данных. Цель seeing(X) успешна, если имя текущего входного потока сопоставимо с X. Предикат seen закрывает текущий входной поток и переключается на интерактивный ввод данных от пользователя.

Текущим выходным потоком данных по умолчанию является экран (user). Предикат tell(X) открывает файл X, если он еще не открыт, и файл X становится текущим выход­ным потоком данных Цель telling(X) успешна, если имя текущего выходного потока сопоставимо с X. Предикат told закрывает текущий выходной поток и переключается на интерактивный вывод данных пользователю.

Выше перечислены классические предикаты, используемый в Эдинбургской нотации.

Следует отметить, что SWI-Пролог содержит избыточное множество встроенных предикатов для работы с файловой системой (часть которых представлена ниже), и даже поддерживает ряд команд, заимствованных из ОС Unix (например, вызов ls. - выдаст список всех файлов в текущей рабочей директории, а команда cd('../'). - сменит текущий рабочий каталог на его родительскую директорию).

В диалекте SWI-Пролога в частности заслуживают внимания следующие предикаты (их подробное описание можно найти в программной справке):

  • edit/1 - редактирование файла

  • open/3 - открытие файла (создание потока)

  • append/1 - добавление данных в конец файла

  • include/1 - подключить файл с объявлениями

  • load_files/2 - загрузка исходных кодов программ с опциями

  • read_file_to_terms/3 - чтение содержимого файла в виде термов

  • exists_file/1 - проверить существование файла (по заданному пути)

  • delete_directory/1 - удаление заданной директории

  • delete_file/1 - удаление заданного файла

  • absolute_file_name/2 - получить абсолютный путь к файлу

  • file_base_name/2 - получить имя файла из полного пути

  • file_directory_name/2 - получить путь к файлу (вплоть до последней директории)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]