2013-05-26 5 views
2

현재 내 Android 앱에 큰 파일 (> 14MB)을 읽으려고합니다. 는 여기에 내가 현재 사용하고 코드입니다 :큰 파일을 읽는 Android (메모리 부족 예외)

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 

그러나 나는 ~ 14메가바이트 할당에 메모리 부족 예외를 얻고있다. 16MB의 최대 앱 크기 (기기에 따라 다름)에 대한 내용을 읽었으나 많은 양의 데이터를로드하는 좋은 방법을 찾을 수 없습니다.

큰 파일을로드하는 가장 쉬운 방법은 무엇입니까?

+1

전체 파일을 메모리로 읽어야합니까 ??? 작은 덩어리로 처리 할 수 ​​있습니까 ??? –

+0

mmap() 파일? – fge

답변

1

큰 파일을 사용하는 대신 여러 개의 작은 파일 (~ 1MB)을 사용하십시오. 그런 다음 한 번에 모든 데이터를 읽어야 할 경우 순차적으로 읽으십시오.

0

InputStreamReader 클래스를 사용하면 파일을 바이트 단위로 읽을 수 있습니다. 이미 해당 클래스를 사용 중입니다. 그러나 BufferedReader 클래스에 포함하고 있습니다. 따라서 BufferedReader을 삭제하고 큰 파일을 바이트 단위로 읽으십시오. 그렇게하고 바이트를 처리하면 단일 작업으로 전체 파일을 읽을 필요가 없습니다.

0

char로 char을 읽을 수 있지만이 작은 블록을 사용한 후에는 할당 제거 참조를 감시하므로 Garbage Cleaner가 해당 메모리를 반환 할 수 있습니다.