Я загружаю базы данных из сети, которые составляют от 100 Кбайт до 500 Кбайт. Вот мой код (удален бесполезный код):FileOutputStream очень медленный
URLConnection uConnection = downloadUrl.openConnection();
InputStream iS = uConnection.getInputStream();
BufferedInputStream bIS = new BufferedInputStream(iS);
byte[] buffer = new byte[1024];
FileOutputStream fOS = new FileOutputStream(db);
int bufferLength = 0;
while ((bufferLength = bIS.read(buffer)) > 0) {
fOS.write(buffer, 0, bufferLength);
}
fOS.close();
Моя проблема в том, что она занимает много времени для него, чтобы закончить While-заявление. Я что-то испортил код? Это не должно занять столько времени для таких небольших файлов, не так ли? Я говорю о 1 минуте, за три файла размером не более 1 Мб ... Спасибо заранее!
Что заставляет вас думать, что проблема связана с 'FileOutputStream'? Проблема может быть так же легко доступна для загрузки ваших данных. Вы использовали что-то вроде Traceview, чтобы точно определить, где вы тратите ваше время? – CommonsWare
Я не знаю, что такое Traceview. Я отлаживал код, и из-за того, что while-statement он очень медленный. Я также подумал, что загрузка данных выполняется, когда мой InputStream-Object инстанцируется. Или он не загружен там? – ezcoding
, используя буфер размером 1024, является ИМХО плохая идея. На смартфоне все носители обычно имеют размер блока размером 4096 байт или больше (например, SD-Card). – Robert