У меня есть текстовый файл в моем приложении для Android, который состоит из json. Мне нужно прочитать и разобрать это json. Размер файла: 21 МБ. Я использую следующий код для чтения файла:Как читать большой json из текстового файла в приложении для Android?
StringBuilder stringBuilder = new StringBuilder();
InputStream input = getAssets().open(filename);
int size = input.available();
byte[] buffer = new byte[size];
byte[] tempBuffer = new byte[1024];
int tempBufferIndex = 0;
for(int i=0; i<size; i++){
if(i == 0){
tempBuffer[tempBufferIndex] = buffer[i];
}else{
int mod = 1024 % i;
if(mod == 0){
input.read(tempBuffer);
stringBuilder.append(new String(tempBuffer));
tempBufferIndex = 0;
}
tempBuffer[tempBufferIndex] = buffer[i];
}
}
input.close();
Размер int 20949874 в реальном случае. После цикла цикл stringBuilder length всегда 11264, даже если я изменяю диапазон для цикла. Я попытался сделать одну строку из InputStream без использования цикла, но он всегда дает мне OutOfMemoryError Exception. Я также получаю «Grow heap (frag case) до 26.668MB для выделения 20949890 байтов» в моих журналах. Я искал здесь и пробовал разные решения, но не работал. Любая идея, как я должен решить эту проблему. Заранее спасибо.
Я могу порекомендовать использовать gson – wvdz
Я думаю, что вы превысили размер кучи, выделенный для приложения, проверьте ниже ответ Suvitruf. – Yazan