У меня есть приложение, которое загружает zip файл, а затем копирует этот файл во временный файл на SD-карте на телефоне, но происходит очень медленно.
InputStream in = new BufferedInputStream(url.openStream(), 1024);
File tempFile = File.createTempFile("arc", ".zip", targetDir); //target dir is a file
String tempFilePath = tempFile.getAbsolutePath();
OutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
//copying file (in different void)
byte[] buffer = new byte[8192];
int len;
len = in.read(buffer);
enter code here
//it loops here for AGES
while (len >= 0) {
out.write(buffer, 0, len);
len = in.read(buffer);
}
in.close();
out.close();
Мой файл составляет около 20 МБ, изначально у меня был размер буфера 1024 и изменил его на 8192, думая, что он может ускорить его, но, похоже, не имеет значения? Я всегда заканчиваю, и я не получаю ошибок, это просто требует возраста!
Я искал, чтобы попытаться найти решение, но я не придумываю ничего, поэтому я, возможно, ошибаюсь по этому пути?
Может ли кто-нибудь увидеть, что я делаю неправильно?
Бекс
Не увеличивайте размер буфера. Это может вызвать ваше приложение MemoryOutOfBoundsException.
Существуют различные факторы, для которых ваша загрузка будет медленной. Слабое подключение к Интернету, также ответственный режим передачи и получения слабых файлов. Это также зависит от емкости устройства. Проверьте, используете ли вы следующий код для создания входного потока
URL u = new URL("enter url url here");
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
InputStream in = c.getInputStream();
Спасибо Дипак