ЗАКРИТТЯ ФАЙЛУ
Після закінчення роботи з файлом файл обов’язково треба закрити. Запис значень змінних на диск проводиться через буфер (область оперативної пам’яті). Файлова система слідкує за заповненням буфера і автоматично, непомітно для користувача записує заповнений буфер на диск. Часто залишок даних не заповнює буфер і тому залишок виводиться тільки при закритті файлу.
При закритті файлу виконуються наступні дії:
1. Виводиться залишок буфера з даними в файл на диск.
2. Корегуються відомості про кількість байтів у файлі в каталогу.
3. Очищується область з символічним ім'ям файлу і розривається зв’язок між символічним ім’ям файлу і файлом на диску.
Закриття файлу виконується предикатом
closefile(Символічне ім'я).
Приклад: closefile (f)
Предикат Flush (Символічне ім'я)
Дозволяє вручну вивести незаповнений буфер в файл на диск.
Приклад: flush(f)
Предикат очищує буфери системи.
Предикати роботи з каталогами працюють з ім'ям файлу в операційній системі. Файли повинні бути закритими.
Предикат existfile (Ім'я файлу в ОС)
(і)
Перевіряє, чи існує файл на вказаному диску за вказаним шляхом. Предикат істинний, якщо файл знайдено. Предикат не знаходить каталоги. В рядку, що задає шлях „\” вказують двічі.
Приклад: existfile("d:\\program\\Prolog\\v\\h1.dat").
Предикат disk (Шлях)
Режими: (і) - робить диск та каталог поточними
(о) – повертає поточні диск і каталог
Приклад: disk(“d:\ \prolog”)
Предикат deletefile (Ім'я файлу в ОС)
Вилучити файл з вказаного диску за вказаним шляхом.
Приклад: deletefile(“a:G.dat”)
Предикат renamefile (Старе ім'я, Нове ім'я)
Перейменує файл на вказаному диску за вказаним шляхом. Предикат істинний, якщо новий файл не існує.
Приклад: renamefile (“g1.dat”,”g2.dat”)
Предикат searchfile (Список шляхів, Ім’я файлу, Змінна)
(і, і, o)
Предикат знаходить серед вказаного списку шляхів потрібне ім'я файлу і повертає ім’я разом зі шляхом. Список шляхів задають через „;”.
Приклад: do:-searchfile(“d:\\; c:\\”, “F.asc”, T), write(T).
Процедура do виводить ім’я файлу разом зі шляхом.
Предикат copyfile ( Ім’я файлу, Ім’я копії файлу)
(і,і)
Предикат копіює файл і надає копії вказане ім’я. Копія має такі атрибути як оригінал.
9.7. ПРЕДИКАТИ, ЩО ПРАЦЮЮТЬ З АТРИБУТАМИ ФАЙЛІВ
Фізичні файли на диску можуть мати атрибути: архівний, схований, системний. Такі атрибути визначають дії системи відносно файлу. Крім того, атрибути файлу визначають дозволений доступ до файлу користувача(access modes): „тільки для читання”, „для читання і запису”, „тільки для запису”. Для файлів, що використовують декілька користувачів(sharing modes), існують атрибути, які вказують чи може інший процес відкрити цей файл з певним атрибутом.
Предикат openfile (Символічне ім’я, І’мя файлу в ОС,
Режими доступу і розподілу для файлу,
Фізичні атрибути файлу,
Дії при відсутності або наявності файлу.
(і, і, і, і, і)
Відкриває файл для утворення з вказівкою атрибутів.
Режими доступу і розподілу для файлу – формується з об’єднання по одному атрибуту з груп fm_access_XX i fm_ sh_XXXX і, необов’язково з атрибутів fm_returnerr, fm_writethru.
Длярежиму доступуfm_access ХХ може бути:
Ø Ro відкрити тільки для читання;
Ø Wo відкрити тільки для запису;
Ø Rw відкрити для читання і запису.
Для режиму розподілу fm_ shXXXX може бути:
Ø fm_sh_denyrw відмова читати/писати;
Ø fm_sh_denywr відмова писати;
Ø fm_sh_denyrd відмова читати;
Ø fm_sh_denyno відмов нема.
Обробка помилок:
Ø fm_returnerr повертати помилку
Ø fm_writethru вивід на
Фізичні атрибути файлу:
Ø fa_normal на читання і запис нема обмежень;
Ø fa_rdonly тільки читати;
Ø fa_hidden схований файл;
Ø fa_system системний файл;
Ø fa_subdir підкаталог;
Ø fa_arch архівний файл.
Дії при наявності файлу з вказаним ім’ям (утворення прапорців):
Ø cr_ex_fail якщо файл існує, генерирувати помилку OS;
Ø cr_ex_open файл, що існує, відкритий;
Ø cr_ex_replace якщо файл існує, замінити;
Дії при відсутності файлу з вказаним ім’ям(утворення прапорців:
Ø cr_noex_fail генерує помилку, якщо файл не існує;
Ø cr_noex_create утворити файл, якщо він не існує;
ЛІТЕРАТУРА
1. Анатолий Адаменко, Андрей Кучуков Логическое программирование и Visual Prolog.- Санкт-Петербург. : ”БХВ Петербург”, 2003г., -990.
2. Ц. Ин, Д.Соломон. Использование Турбо-Пролога. – М.: Мир, 1993 г., -с.606.
3. Доорс Дж. и др. Пролог– язык программирования будущего. – М.: Финансы и статистика, 1990 г.,-с.141.
4. Клоксин У., Меллиш К. Программирование на языке Пролог. – М.: Мир, 1987 г., 336.
5. Янсон А. Турбо-Пролог в сжатом изложении. – М.: Мир, 1991 г., 136.
6. Марселлус Д. Программирование экспертных систем на Турбо-Прологе. – М.: Финансы и статистика, 1994 г., 254.
7. Документация по Турбо-Прологу. Версия 2.0. Руководство пользователя. 1988г.,-с.174.