2013-03-26 3 views
0

우선이 질문을 반복하고 있지만 내 문제에 대한 관련 솔루션을 찾지 못한 경우 미안합니다.xml에 30MB 이상의 데이터를 쓰는 방법은 무엇입니까?

아래 문제를 해결하는 방법을 찾는 데 어려움을 겪고 있습니다.

1) xml에 30MB - 400MB 이상의 데이터를 작성해야하는 시나리오에 직면하고 있습니다. 'String' 개체를 사용하여 xml에 데이터를 추가하면 'OutOfMemory' 예외가 발생합니다.

R & D에서 더 많은 시간을 보낸 후 'Stream'을 사용하면이 문제를 해결할 수 있다는 사실을 알게되었습니다. 하지만 이것에 대해서는 잘 모르겠습니다.

2) 일단 xml을 구성하면이 데이터를 Android 기기를 사용하여 DMZ 서버로 보내야합니다. 이 상황에서 HTTP를 사용하여 많은 양의 데이터를 보내는 것이 어렵다는 것을 알고 있습니다. 이 경우

 a) Using FTP will be helpful in this scenario? 
    b) Splitting the data into chunks of data and sending will be helpful? 

알려 주시면 의견을 보내주십시오. 미리 감사드립니다.

+0

파일 분할 및/또는 압축 (허프만 코딩은 XML IMHO에 유용 할 것입니다)은 업로드 시간에 많은 도움이됩니다. – Machinarius

+0

@Machinarius - 답장을 보내 주셔서 감사합니다. –

답변

2

전 ftping 전에 데이터를 압축하는 것이 좋습니다. ZipOutputStream을 사용할 수 있습니다.

Out of Memory Exception의 경우 힙 크기를 늘릴 수 있습니다. 다음을 확인하십시오 : Increase heap size in Java

시도한 힙 크기, 코드 및 예외 추적을 게시 할 수 있습니까?

+0

예, 감사 할 것입니다. 'OutofMemory'예외에 '스트림'을 사용하는 것에 대한 생각이 있다면 알려 주시기 바랍니다. –

+0

예, XML은 10 대 1의 비율로 압축해야합니다. – djangofan

+0

dalvik VM의 힙 크기를 늘리고 시도했습니다. 하지만 여전히 같은 오류가 발생합니다. –

1

StAX 또는 SAX를 사용하십시오. 이것들은 생성 된 XML 부분을 즉석에서 OutputStream에 쓰므로 모든 크기의 XML을 생성 할 수 있습니다. 당신이 무엇을해야

+0

예, SAX를 사용해 보겠습니다. 답장을 보내 주셔서 감사합니다. –

0

우선이다, XML 형식의 데이터를 읽고 쓸 수있는 XML 파서를 사용합니다. SAX 또는 DOM 일 수 있습니다. 데이터 크기가 크다면 CSV 형식을 사용해보십시오. XML 태그를 저장할 필요가 없으므로 공간을 덜 차지할 것입니다.

둘째, 출력 파일을 만들 때 그 파일이 작은 작은 파일인지 확인하십시오.

세 번째로 네트워크를 통해 전송할 때 모든 것을 압축했는지 확인하십시오.

그리고 세상에는이 디자인에서 사용자 모바일 데이터 캡을 먹지 마십시오. 이 파일 크기에 대해 사용자에게 경고하고 WiFi 네트워크를 사용할 것을 제안합니다.

관련 문제