我的想法是将较大的响应文本分成小部分,以同时加载它们。
以下代码可帮助我从URL打开流,但是我想从多线程加载其全部内容以优化性能,然后将它们合并为一个结果。但是,该方法返回一个ReadableByteChannel,它无法指定起始位置,因此我必须线性地传输它:
URL url = new URL("link");
InputStream fromStream = url.openStream();
ReadableByteChannel fromChannel = Channels.newChannel(fromStream);
有没有办法指定类似于SeekableByteChannel的位置(似乎喜欢此接口仅适用于文件)?谢谢你:D
答案 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?