Има ли начин да напишете текстов файл, да прочетете няколко реда, да го затворите, да го отворите отново и да започнете да четете от реда, където сте спрели преди? Или винаги трябва да започнете отгоре?
Започнете да четете текстов файл от определен ред
Отговори (4)
Просто бих започнал от върха всеки път. Това е най-простият и вероятно не много по-бавен. Можете да използвате RandomAccessFile, но ще трябва да го обвиете с вашия собствен четец на редове (както и да поставите известна проверка дали файлът не е променен по несъвместим начин)
String readLine()
имплементиран.
- person bezmax; 12.01.2011
Със сигурност можете! Това няма да е най-бързият метод, но ще работи. И, между другото, хората, които отговориха на въпроса ви, като ви казаха, че просто трябва да започнете да преработвате от началото на файла НАПЪЛНО пропуснаха смисъла на въпроса ви. Има много причини да искате да се върнете там, откъдето сте спрели.
Ето някакъв код, който написах, който ви позволява да съхранявате стойност на брояча и след това да обикаляте файла, докато достигнете отново стойността на брояча... в който момент цикълът се отразява и обработва това, което е в цикъла за останалите редове .
наздраве!
//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++
///////////////////////////////////////////////////////////////
}
Сигурен съм, че всеки път, когато отворите файл, той започва отначало.
Не можете ли просто да запазите номера на реда външно и да преминете към / да потърсите желаната позиция?