#java #android #inputstream #fileoutputstream #local-files
#java #Android #inputstream #fileoutputstream #локальные файлы
Вопрос:
Я читаю XML-канал с веб-сайта, но по соображениям производительности я хотел бы иметь возможность считывать его в локальный файл на Android, чтобы я мог обрабатывать его несколько раз без задержек и затрат в сети.
Я читаю веб-файл, используя следующий код:
private InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream instream = conn.getInputStream();
return instream;
} catch (Exception e) {
Log.i("downloadUrl", "4 - Exception: " e.getMessage());
return null;
}
}
Тем не менее, я получаю сообщение «4 — Exception: null» от downloadUrl (), которое портит мой код сохранения файла ниже:
public Boolean copyStream(String feed, String file) {
InputStream input_data = null;
FileOutputStream output_data = null;
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
int buffer_count = 0;
try {
input_data = downloadUrl(feed);
output_data = openFileOutput(file, Context.MODE_PRIVATE);
while ((len = input_data.read(buffer)) != -1) {
output_data.write(buffer, 0, len);
buffer_count ;
}
input_data.close();
output_data.close();
} catch (Exception e) {
Log.e("copyStream", "Error=" e.getMessage() ", feed=" feed
", file=" file ", buffer_count=" buffer_count);
return false;
}
return true;
}
Если я смогу решить проблему с InputStream, будет ли CopyStream () отправлять текст XML в локальный файл без ошибок разрешения?
Заранее спасибо………… Фил
greenapps,
Это logcat, но он говорит немного больше, чем я уже предоставил (замените 192.168.1.213 на 83.104.132.69 для внешнего URL):
06-19 08:05:04.414: I/downloadUrl(1108): 4 - Exception: null
06-19 08:05:04.414: E/copyStream(1108): Error=/summary.xml: open failed: EROFS (Read-only file system), feed=http://192.168.1.213/cgi-bin/beerxml_a.cgi?beer_display=Summaryamp;beer_country=*All*amp;beer_brewer=*All*amp;beer_type=*All*, file=summary.xml
Комментарии:
1. Пожалуйста, опубликуйте stacktrace / logcat. Разрешения не требуются для частной внутренней памяти.