有什么方法可以从URL字节流的特定位置开始读取吗?

时间:2018-08-03 17:14:44

标签: java multithreading java-stream channel

我的想法是将较大的响应文本分成小部分,以同时加载它们。

以下代码可帮助我从URL打开流,但是我想从多线程加载其全部内容以优化性能,然后将它们合并为一个结果。但是,该方法返回一个ReadableByteChannel,它无法指定起始位置,因此我必须线性地传输它:

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

有没有办法指定类似于SeekableByteChannel的位置(似乎喜欢此接口仅适用于文件)?谢谢你:D

1 个答案:

答案 0 :(得分:2)

如果您可以在请求成为流之前对其进行操作,那么可以,您可以使用Range http标头指定所需的数据块...

请参见Downloading a portion of a File using HTTP Requests

否则,您将不得不手动读取不需要的数据。

请参见Given a Java InputStream, how can I determine the current offset in the stream?