Есть ли способ начать чтение с определенной позиции потока байтов URL?

Моя идея состоит в том, чтобы разделить большой текст ответа на маленькие части, чтобы загружать их одновременно.

Следующий код помогает мне открыть поток с URL-адреса, но я хочу загрузить весь контент из многопоточности для оптимизации производительности, а затем объединю их в один результат. Тем не менее, метод возвращает ReadableByteChannel, который не может указать начальную позицию, и я должен передать его линейно:

URL url = new URL("link");
InputStream fromStream = url.openStream();
ReadableByteChannel fromChannel = Channels.newChannel(fromStream);

Есть ли способ указать позицию, как SeekableByteChannel (похоже, этот интерфейс работает только с файлом)? Спасибо тебе:D

1 ответ

Решение

Если вы можете манипулировать запросом до того, как он станет потоком, тогда да, вы бы использовали Range Заголовок http, чтобы указать кусок данных, которые вы хотели...

См. Загрузка части файла с использованием HTTP-запросов.

Если нет, то вам придется вручную прочитать данные, которые вам не нужны.

См. Учитывая Java InputStream, как я могу определить текущее смещение в потоке?

Другие вопросы по тегам