get_line/1/2 reads a line. Fails on EOF.
result atom stream atom
main([Infile,Outfile|_]) :- open(Infile,read,Instream), open(Outfile,write,Outstream), copy(Instream,Outstream), close(Instream), close(Outstream).copy(Instream,Outstream) :- get_line(Instream,Line), write(Outstream,Line),nl(Outstream), copy(Instream,Outstream). copy(_Instream,Outstream) :- flush_output(Outstream).
This predicate is not part of the ISO-Prolog Standard.