Prolog/输入输出
外观
< Prolog
文件名必须放在单引号之间,这样它们才能成为原子。("foo.txt" 不起作用,因为它是一个字符列表而不是一个原子。)在 Windows 系统中,您可以将路径写为 'C:/foo.txt' 或 'C:\\foo.txt'。
您可以使用 see/1 打开文件,并使用 seen/0 关闭。以下程序读取一个文件,并将其打印到标准输出。
process(X):-
X = 'c:/readtest.txt',
see(X),
repeat,
get_char(T),print(T),T=end_of_file,!,seen.
您可以同时打开多个文件:如果您使用 see(file1),然后 see(file2),您将同时拥有 2 个打开的文件,如果您现在调用 get_char,它将从 file2 读取。如果您再次调用 see(file1),file1 将再次激活。您可以按任何顺序关闭这些文件。
read 谓词用于解析 Prolog 项。(它也可以处理 DCG 语法。)您可能需要它用于自我修改程序,或用于转换 Prolog 代码的程序。
在遵循 ISO 标准时,来自文件和网络的数据以相同的方式处理:作为数据流。
- 打开一个文件以供读取:open(Filename, read, Streamhandler)
- 打开一个文件以供写入:open(Filename, write, Streamhandler)
process(File) :-
open(File, read, In),
get_char(In, Char1),
process_stream(Char1, In),
close(In).
process_stream(end_of_file, _) :- !.
process_stream(Char, In) :-
print(Char),
get_char(In, Char2),
process_stream(Char2, In).