Obecnie próbuję odczytać duże pliki (> 14 MB) w mojej aplikacji na Androida. Oto kod, którego obecnie używam:
AssetManager manager = context.getAssets();
InputStream stream = manager.open(Filename);
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
Scontent = br.readLine(); //I just load one big line that is bigger than 14 MB
Ale dostaję wyjątek braku pamięci przy alokacji ~ 14 MB. Przeczytałem coś o maksymalnym rozmiarze aplikacji 16 MB (w zależności od urządzenia), ale nie mogę znaleźć dobrego sposobu na załadowanie tak dużej ilości danych.
Jakie byłoby najłatwiejsze rozwiązanie do ładowania tak dużych plików?
Odpowiedzi:
1 dla odpowiedzi № 1zamiast dużych plików użyj wielu mniejszych plików (~ 1 MB). Następnie przeczytaj je sekwencyjnie, jeśli chcesz odczytać wszystkie dane na raz
0 dla odpowiedzi nr 2
The InputStreamReader
klasa pozwoli ci odczytać plik bajt po bajcie. Używasz już tej klasy, jednak osadzasz ją w pliku BufferedReader
klasa. Więc odrzuć BufferedReader
i przeczytaj sam swój bajt po bajcie. Jeśli to zrobisz i przetworzysz bajty w trakcie pracy, nie będziesz musiał czytać całego pliku w jednej operacji.
0 dla odpowiedzi № 3
Możesz czytać char po char, ale znowu, ale uważaj na temat alokacji usuwaj referencje po użyciu tego mniejszego bloku, aby Garbage Cleaner mógł zwrócić tę pamięć.