2010-05-24 4 views
0

Доброе утро/вечеркопировать файл в другой файл в прологе

Как я могу написать что-то в файле, а затем скопировать его содержимое в текущий файл?

например, я обращаюсь к file1.pro, тогда у меня есть правило написать что-то в файле2.pro, после того как это правило завершит работу, я хочу добавить содержимое файла file2.pro int file1.pro.

когда я попытался добавить в file1.pro непосредственно, появляются данные как неопределенных символов, я не знаю, почему

пожалуйста HELLP мне

спасибо.

+0

Как вы пытались подключиться непосредственно в файл? – rvirding

+0

Используется см. ('File2.pro'), читать (X), type1 (X), видеть, final, reconsult ('file1.pro'), reconsult ('file2.pro'). type1 (end_of_file). type1 (X): - open ('file1.pro', append, Stream), write (Stream, X), close (Stream). final: -open ('file1.pro', append, Stream), write (Stream,.), Close (Stream). – smile

ответ

1

Особенности решения могут зависеть от диалекта Prolog. Здесь я использую SWI-Prolog. SWI-Prolog позволяет открывать файл с открытым (SrcDest, Mode, Stream), где SrcDest будет вашим именем файла, Mode - чтение/запись/добавление/обновление, а Stream - это «дескриптор файла», который система вернет. В руководстве поясняется разница между добавлением и обновлением следующим образом: «Режим append открывает файл для записи, позиционирует указатель на файл в конце. Обновление режима открывает файл для записи, позиционирует указатель файла в начале файла без усечения файл."

Для копирования из одного потока в другой используйте copy_stream_data (Stream1, Stream2).

Наконец, вы должны закрыть потоки, иначе выходной файл будет пустым.

Собираем все вместе дает

копию (File1, File2): - открытый (File1, читать, Stream1), открытый (File2, писать, stream2), copy_stream_data (file1, file2), недалеко (File1), закрыть (Файл2).

Если вам нужно переписать второй файл, просто используйте режим обновления/добавления.

Смежные вопросы