如何在Prolog中截断文件长度?

如何在Prolog中截断文件长度?

我只在ISO中找到了set_stream_position / 2谓词
标准.但我找不到set_stream_length / 2谓词
在主要的Prolog系统中.

类似地,有一个流属性位置/ 1,但是我
看不到长度/ 1流属性.后者
将有助于使用set_stream_length / 2.

解决方法是什么?

再见

最佳答案 我想我明白了!

this页……

在@false注释之后编辑,这里是封装代码的草图:

set_file_size(Path, Size) :-
    setup_call_cleanup(
        open(Path, update, S),
        (   stream_property(S, reposition(true)),
            % stream_property(S, position(Q)),
            % set_stream_position(S, Q),
            seek(S, Size, bof, Size),
            set_end_of_stream(S)
        ),
        close(S)).

这有效,但依赖于seek/4内置.我无法完全确定此类呼叫WRT ISO合规性的状态.它在ISO IO下列出,但未标记为合规…

这两条注释的线路向我提供了检查不透明术语位置/ 1.有一个stream_position_data查询价值观.

点赞