2014-05-09 6 views
-2

대용량 파일> 50MB를 StringBuilder를 사용하여 문자열로 변환하려고하면 OOM 문제가 발생합니다.큰 파일을 Java 문자열로 변환해야합니다.

비슷한 질문이 있지만 답변이 도움이되지 않았습니다.

최종 동기는 파일 데이터를 xml 속성에 추가하고 이것을 서버로 전송합니다.

Android 기기에서 사용해보기. 사용

코드는이 게시물 형태 : How do I create a Java string from the contents of a file?

+2

당신이 실제 장치 또는 에뮬레이터에 오류가 있습니까 : –

+3

작업 코드 샘플을 사용하여 질문에 쉽게 대답 할 수 있습니다. 자신의 문제를 나타내는 [최소 예제] (http://stackoverflow.com/help/mcve)로 코드를 게시하십시오. –

+0

StringBuilder를 사용하여 파일을 변환하려고 시도한 코드를 볼 수 있습니까? 파일 데이터를 XML에 추가하는 것과 관련된 코드를 볼 수 있습니까? 메모리 부족 문제가 발생하지 않고 코드를 조정할 수있는 방법이있을 수 있습니다. –

답변

0

가 확인을 list<string>하고 파일을 읽는 동안, 모든 예를 들어, 저장 200자를 새 문자열로 목록에 추가합니다. 그런 다음 XML과 동일한 방식으로 작성할 수 있습니다.

도움이되기를 바랍니다.

0

힙에 전체 파일이 한 번에 나타나지 않도록하려면 Multipart 메시지를 사용하여 서버로 보내면됩니다. 한 부분은 XML을 포함 할 것이고, 파일은 분리 된 부분에있을 것이다. 이것은 웹 서비스를 사용하여 구현할 수 있지만 요구 사항과 서버 구현을 변경할 수있는 정도에 따라 다릅니다.

서버가 "고정"되어 멀티 파트 메시지를 수락 할 수없고 한 XML로 모두 전송해야하는 경우 DOM을 사용하여 XML을 생성하지 않아야합니다.

public static void main(String[] args) throws Exception { 
    IOUtils.write("string", new FileOutputStream("file")); 
} 
+0

예 서버 측 구현을 변경할 수 없으며이를 제어 할 수 없습니다. – user2717141

관련 문제