Witam,
moj plik TXT ma 450Mb i zawiera pomiary. Potrzebuje go podzielic na mniejsze pliki o rozmiarze powiedzmy 60Mb.
Napisalem VI, ktory do dla mnie robil. Przy pliku TXT 80Mb nie bylo problemow. Przy 450Mb zapelnia mi pamiec RAM i program sie wysypuje.
Na zalaczniku jest moje rozwiazanie.
Otwieram moj plik TXT, czytam jego zawartosc i wysylam do petli While. Z kazda interacja petli While z pliku TXT ma byc wyciete 10tys wierszy i zapisane do nast pliku TXT. Gdy nowe pliki maja mniej niz 1kB zatrzymuje petle While, bo plik TXT z pomiarami zostal juz caly pociete na mniejsze.
Jak to mozna zoptymalizowac, zebym mogl tez pliki po 400-500Mb otwierac i ciac na mniejsze? Komputer ma 4GB pamieci RAM a teraz LV po uruchomieniu pogramu zapelnia ponad 3GB i krzyczy, ze pamiec sie skonczyla
Dzielenie pliku TXT
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Dzielenie pliku TXT
Najlepsze rozwiązanie to czytać po kawałku a nie cały plik na raz:
Dzielenie pliku TXT
W Twoim przykladzie tne jeden plik na kolejne o ustalonej ilosci Bytow. U mnie pojawil sie problem, ze przy dzieleniu na kolejne pliki tekstowe polowa wiersza zapisywana jest do jednego pliku a polowa do drugiego.
Czy teraz jedyna mozliwoscia jest ustalenie ile Bytow ma jeden wiersz i na tej podstawie dzielenie jednego pliku na kolejne o ustalonej ilosci wierszy czy mozna to zrobic w inny sposob?
Czy teraz jedyna mozliwoscia jest ustalenie ile Bytow ma jeden wiersz i na tej podstawie dzielenie jednego pliku na kolejne o ustalonej ilosci wierszy czy mozna to zrobic w inny sposob?
- Pitol
- Moderator
- Posty: 982
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Re: Dzielenie pliku TXT
Możesz to zrobić, nawet prościej niż poprzedni przykład.
Musisz tylko w bloczku Read Text File zaznaczyć Read Lines.
Jedyny problem będzie przy ostatnim odczycie, ponieważ liczba linii nie będzie się zgadzać i zostanie zgłoszony błąd 4. Wystarczy go odpowiednio obsłużyć.
Wydaje mi się, że nie ma prostej możliwości obliczenia liczby linii w pliku bez wczytania go w całości. Możnaby w sumie skorzystać z poprzedniego przykładu i liczyć ile tam znaków nowej linii wystąpiło i dopiero potem znów odczytywać plik wg wyznaczonej liczby linii. Dużo więcej zabawy, nie wiem czy opłacalne. Lepiej obsłużyć błąd
Musisz tylko w bloczku Read Text File zaznaczyć Read Lines.
Jedyny problem będzie przy ostatnim odczycie, ponieważ liczba linii nie będzie się zgadzać i zostanie zgłoszony błąd 4. Wystarczy go odpowiednio obsłużyć.
Wydaje mi się, że nie ma prostej możliwości obliczenia liczby linii w pliku bez wczytania go w całości. Możnaby w sumie skorzystać z poprzedniego przykładu i liczyć ile tam znaków nowej linii wystąpiło i dopiero potem znów odczytywać plik wg wyznaczonej liczby linii. Dużo więcej zabawy, nie wiem czy opłacalne. Lepiej obsłużyć błąd
Dzielenie pliku TXT
Dzieki
Nie wiedzialem, ze bloczek Read Text File ma mozliwosc ustawienia ilosci wierszy, ktore maja byc odczytane
Nie wiedzialem, ze bloczek Read Text File ma mozliwosc ustawienia ilosci wierszy, ktore maja byc odczytane