Я пробовал один и тот же файл с браузером Opera и кодом Java.Скачивание файла происходит так медленно
Opera Browser дает скорость почти 2 МБ/с, но код Java дает не более 400 КБ/с. Что случилось с моим кодом?
Я думаю, что я делаю это неправильно с чтением с помощью BufferedReader, но я понятия не имею, почему это происходит и как я могу исправить.
PS: Я только тестирую скорость, не запускаю файл. Я знаю, что это двоичный файл, это имеет значение на скорости?
StringBuilder builder = new StringBuilder();
HttpURLConnection uri = (HttpURLConnection) new URL("http://speedtest.tele2.net/3MB.zip").openConnection();
uri.setRequestMethod("GET");
uri.setConnectTimeout(5000);
InputStream ent = uri.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ent, "iso-8859-1"), 8);
while ((line = reader.readLine()) != null) {
builder.append(line + "\n");
}
Вы можете прочитать файл в около 100 Мб/с с BufferedReader, я бы больше беспокоиться о чтении бинарный файл как текст, который не будет работать. Вы должны прочитать его как двоичный. –
@PeterLawrey это только для speedtesting, а не для бега, так что я думаю, что это нормально делать? –
@ AlperÖzdemir не очень, BufferedReader должен работать, чтобы искать новые строки в прочитанных данных. Выполнение бинарной передачи наиболее определенно более характерно для того, что Opera будет делать под капотом. Кроме того, вы можете просто засунуть больше данных за один раз, считая, например, 4k или 8k за раз. – Gimby