/ / Android odczytuje duże pliki (wyjątek braku pamięci) - Java, Android

Android czyta duże pliki (wyjątek z pamięci) - java, android

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 № 1

zamiast 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ęć.