У меня такая же проблема, придумал этот код. Был быстрее, чем предыдущие версии, которые я пытался. Я указываю размер буфера больше, чем файл, который я собираюсь загрузить. Надеюсь, это поможет.
public String load(String url, int bufferSize){
try {
URL myURL = new URL(url);
URLConnection ucon = myURL.openConnection();
ucon.setRequestProperty("Connection", "keep-alive");
InputStream inputStream = ucon.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(bufferSize);
byte[] buf = new byte[bufferSize];
int read;
do {
read = bufferedInputStream.read(buf, 0, buf.length);
if (read > 0)
byteArrayBuffer.append(buf, 0, read);
} while (read >= 0);
return new String(byteArrayBuffer.toByteArray());
} catch (Exception e) {
Log.i("Error", e.toString());
}
return null;
}