Odczyt ost. linijki z pliku

0

Jak odczytac linijke ostatnia pliku tak by nie trzeba bylo calosci ladowac do pamieci ?
plik ma kilkanascie MB a ja potrzebuje tlyko ostatnai linijke :)

0

Hym.... Może się mylę ale Rewrite ustawia chyba znacznik na końcu pliku więc może by tak wczytywać do poprzedniego EOLn i z powrotem ? Wtedy zamiast całego pliku wczytasz tylko ostatnią linijkę (2razy)

Heh oczywiście że Rewrite kasuje lub tworzy plik (ale plama)
Oczywiście służy do tego komenda

Append(nazwa_pliku);
0

Rewrite ustawia na końcu pliku, tyle, że najpierw tworzy go od nowa.
Może spróbuj potraktować plik txt jako file of byte, potem za pomocą seek w pętli od końca pliku do 1 ustawiaj znacznik, odczytaj znak, dodaj go do jakiegos stringa, a po napotkaniu #10 przerywaj pętlę.

0
irek napisał(a)

Hym.... Może się mylę ale Rewrite ustawia chyba znacznik na końcu pliku więc może by tak wczytywać do poprzedniego EOLn i z powrotem ? Wtedy zamiast całego pliku wczytasz tylko ostatnią linijkę (2razy)

Heh oczywiście że Rewrite kasuje lub tworzy plik (ale plama)
Oczywiście służy do tego komenda

Append(nazwa_pliku);

z tego co pamiętam to po Append nie ma możliwości cofnąć się wstecz. Jedyne sensowne rozwiązanie (poza strumieniami, które mogłyby być szybsze, ale trzeba by to sprawdzić) to to, które podał berl

0

No to otworzyć plik systemowym CreateFile, ustawić pozycję w pliku SetFilePointer o wartość ujemną względem FILE_END i dokonać odczytu.

A jak ktoś nie lubi API Windowsa, to nich użyje bibliotecznej funkcji Seek.

0
Szczawik napisał(a)

No to otworzyć plik systemowym CreateFile, ustawić pozycję w pliku SetFilePointer o wartość ujemną względem FILE_END i dokonać odczytu.

Ale o ile mniejszą?

0

http://4programmers.net/article.php?id=673
ciut przerobić i będzie działać

1 użytkowników online, w tym zalogowanych: 0, gości: 1