サイズが非常に大きいオンライン xml ファイル (約 33 MB) を保存したいと考えています。StringBuilder で xml ファイルを取得し、文字列に変換してから、FileOutputStream で内部ストレージ/Sdcard にファイルを保存しようとしています。
しかし、私はメモリ不足になり、アプリがクラッシュします。StringBuilder から文字列の値を取得しようとすると、クラッシュが発生します。
ここに私の現在のコードがあります:
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("sorry cant paste the actual link due copyrights.xml");
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String result = sb.toString();
System.out.println(result);
FileOutputStream fos = openFileOutput("test.xml", Context.MODE_PRIVATE);
fos.write(sb.toString().getBytes());
fos.close();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}