Особенности решения могут зависеть от диалекта Пролог. Здесь я использую SWI-Prolog. SWI-Prolog позволяет открывать файл с помощью open (SrcDest, Mode, Stream), где SrcDest будет именем вашего файла, Mode - чтение / запись / добавление / обновление, а Stream - «дескриптор файла», который будет возвращать система. В руководстве поясняется различие между добавлением и обновлением следующим образом: «Режим добавления открывает файл для записи, позиционируя указатель файла в конце. Режим обновления открывает файл для записи, располагая указатель файла в начале файла без усечения. файл. "
Для копирования из одного потока в другой вы должны использовать copy_stream_data (Stream1, Stream2).
Наконец, вы должны закрыть потоки, иначе выходной файл будет пустым.
Соединение всего дает
copy (File1, File2): - открыть (File1, read, Stream1), открыть (File2, write, Stream2), copy_stream_data (File1, File2), закрыть (File1), закрыть (File2).
Если вам нужно переписать второй файл, просто используйте режим обновления / добавления.