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

时间:2012-12-25 14:17:07

标签: prolog swi-prolog gnu-prolog iso-prolog

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

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

同样有一个流属性position/1,但是我 没有看到length/1流属性。后者 将有助于使用set_stream_length/2

解决方法是什么?

再见

1 个答案:

答案 0 :(得分: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下,但没有标记为合规......

这2条注释行向我提供检查 opaque 术语位置/ 1。有一个stream_position_data来查询这些值。