如何截斷Prolog中的文件長度?如何截斷Prolog中的文件長度?
我只在ISO 標準中找到set_stream_position/2
謂詞。但是我在主要的Prolog系統中找不到set_stream_length/2
謂詞 。
同樣有一個流屬性position/1
,但我 沒有看到任何length/1
流屬性。後者 將有助於使用set_stream_length/2
。
解決方法是什麼?
再見
如何截斷Prolog中的文件長度?如何截斷Prolog中的文件長度?
我只在ISO 標準中找到set_stream_position/2
謂詞。但是我在主要的Prolog系統中找不到set_stream_length/2
謂詞 。
同樣有一個流屬性position/1
,但我 沒有看到任何length/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上市,但是未標記爲兼容...
這2個註釋行提供給我檢查不透明項位置/ 1。有一個stream_position_data查詢值。
先查找然後設置eof。 Oki Doki。 –
你想'set_stream_length/2'嗎?爲什麼這個操作一般與流相關? – false
這裏有幾個問題:'長度'是指字節數(C/Java)與字符數;該操作的有效性(當它削減多字節字符的一部分時);以及這隻對文件有意義的事實。 – false
如果您使用'stream_property/2'獲取的位置,'set_stream_position/2'只能很好地定義。你不能對此做出任何假設,除非它是一個基礎術語,並且它唯一標識了某個位置。 – false