Как получить количество строк файла в прологе?

Я знаю, что есть предикат:

line_count(Stream, LineCount)

но этот предикат получает, сколько чисел вы читаете или пишете? Мне нужно добавить файл, и перед его добавлением мне нужно проверить количество вставленных строк, так что я могу сделать это каким-либо образом?

Спасибо,


person Yasmin    schedule 04.01.2013    source источник


Ответы (1)


Если поток открыт для записи, то это строки, которые были записаны. Если он открыт для чтения, читаются строки.

Вы можете открыть файл и прочитать его. Затем сохраните строки, и после того, как вы снова откроете его для записи, вы сможете подсчитать написанные вами строки.

http://sicstus.sics.se/sicstus/docs/4.1.0/html/sicstus/mpg_002dref_002dline_005fcount.html

person NotAUser    schedule 04.01.2013
comment
если вы попытаетесь это сделать, вы всегда найдете 1, потому что вы понимаете, как строки вы читаете или пишете, и вы все еще находитесь внутри файла, поэтому каждый раз, когда вы пишете, вы пишете одну строку, и каждый раз, когда вы читаете, это всегда одна линия. - person Yasmin; 04.01.2013
comment
read/2 не читает весь файл. Неудивительно, что line_count всегда дает вам 1. Попробуйте прочитать его, как показано здесь stackoverflow.com/questions/4805601/ - person NotAUser; 04.01.2013
comment
Спасибо, да, это работает, если я читаю весь файл, но я не могу этого сделать в моем случае, потому что мне нужно анализировать строку за строкой, поэтому я определяю переменную и увеличиваю ее с каждой прочитанной строкой, и отправляю эту переменную в предикат, где мне нужно проверить это. - person Yasmin; 04.01.2013