json으로 구성된 내 안드로이드 앱에 텍스트 파일이 있습니다. 나는 그 json을 읽고 파싱 할 필요가있다. 파일 크기는 21MB입니다. 파일을 읽으려면 다음 코드를 사용하고 있습니다.안드로이드 앱의 텍스트 파일에서 큰 json을 읽는 방법?
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 길이는 for 루프를 변경하더라도 항상 11264입니다. 루프를 사용하지 않고 InputStream에서 하나의 문자열을 만들려고했지만 항상 OutOfMemoryError Exception을 제공합니다. 내 로그에는 "Grow heap (frag case)"이 20949890 바이트 할당의 경우 26.668MB가됩니다. 나는 여기에서 수색하고 다른 해결책을 시도하고 그러나 그것을 일하지 않았다. 어떤 생각을 어떻게하면이 문제를 해결해야합니다. 미리 감사드립니다.
gson – wvdz
을 사용하는 것이 좋습니다. 앱 전용 힙 크기를 초과했다고 생각하면 아래 Suvitruf 응답을 확인하십시오. – Yazan