Marcin
Pigłowski
Specjalista ds. baz
danych
Temat: Szybki odczyt plików tekstowych
Chcę napisać program do analizowania plików tekstowych zawierających logi pracy osób korzystających z jakiegoś tam systemu.Program ma do przetworzenia kilkadziesiąt plików, które łącznie ważą jakieś 4 giga. Wyświetla takie dane jak kto pracował i w jakich godzinach (początek i koniec). Osoba analizująca tą pracę wybiera jeden taki wpis i wyświetla sobie zapis pracy (może być nawet i powyżej 500 mega).
Mój pomysł rozwiązania tego problemu jest taki:
1. odczytuje wszystkie pliki po kolei szukając wpisów z początkiem i końcem pracy użytkownika i zapisuje te dane na jakiejś liście łącznie z nazwami plików, które zawierają logi danej osoby i to wyświetlam.
2. Po wybraniu osoby, której logi chce przeglądać odczytuje dane z wybranych plików i zapisuje do pliku tymczasowego i następnie wyświetlam dane z niego i podczas analizy również cały czas działa na nim. Raczej zaczytanie do pamięci ram odpada bo jednak 500 mega to troche dużo szczególnie, że może być wczytanych kilka osób naraz.
I teraz moje pytanie czy to dobry sposób rozwiązania tego problem?
Czy może jest jakieś lepszy sposób? Czy użyć StreamReadera czy może jest coś szybszego (powiem szczerze, że mam małe doświadczenie w operacjach na tak dużych plikach). Czy wszystko niech działa w głównym wątku czy użyć Threadów lub BackgroundWorkerów?
Będę wdzięczny za pomoc.
Z góry dziękuję.