Начните читать текстовый файл с определенной строки - PullRequest
1 голос
/ 12 января 2011

Есть ли способ написать текстовый файл, прочитать несколько строк, закрыть его, снова открыть и начать читать со строки, на которой вы остановились раньше? Или ты всегда должен начинать сверху?

Ответы [ 4 ]

1 голос
/ 24 июля 2012

Вы уверены, что можете!Это не будет самый быстрый метод, но он будет работать.И, кстати, люди, которые ответили на ваш вопрос, сказав, что вы должны просто начать повторную обработку с начала файла, ПОЛНОСТЬЮ упустили смысл вашего вопроса.Есть много причин, чтобы захотеть вернуться туда, где вы остановились.

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

Ура!

//define input text file
def file = new File('C:\\inputtextfile.txt')
//define file for the last referenced counter
def CountFile = new File ('C:\\prime\\lastcount.txt')

//if the counter was null set it to zero
if (CountFile.eachLine({it}) == null){
CountFile.write('0')
}

//read the counter into a value
StartLine = CountFile.eachLine( {it} ) as long
//set the first line of the file
lineCount=0

file.eachLine { line  ->
if (lineCount >= StartLine){


//write the counter to a text file
////////////////////////////////////////////////////////////////
CountFile.write(lineCount.toString())
    lineCount++
///////////////////////////////////////////////////////////////
}
1 голос
/ 12 января 2011

Я бы просто начал сверху каждый раз.Это самое простое и, возможно, не намного медленнее.Вы можете использовать RandomAccessFile, но вам нужно будет обернуть его собственным читателем строк (а также проверить, не изменился ли файл несовместимым образом)

0 голосов
/ 12 января 2012

Разве вы не можете просто сохранить номер строки снаружи и перейти к нужной позиции / найти ее?

0 голосов
/ 12 января 2011

Я уверен, что каждый раз, когда вы открываете файл, он начинает вас с самого начала.

...