1

OKHttp的BufferSink(或BufferedSource)中如何实现seek()函数?

我们都知道,在 Java 中,RandomAccessFile 类有一个方法seek(long),它使我们能够从特定位置开始读取/写入文件,并且该位置之前的字节将被丢弃。OKHttp中是否有类似的方法?

我注意到BufferedSink中有一个方法:

write(byteString: ByteString, offset: Int, byteCount: Int)

但不幸的是,参数“offset”只接受int类型,而不是long类型,这在传输大文件时有一定的限制。

4

2 回答 2

2

您正在寻找的 API 是BufferedSource.skip().

在 Okio 3.0(即将推出)中,我们添加了一个新Cursor类,skip()如果底层源是File.

https://github.com/square/okio/issues/889

于 2021-02-15T04:55:52.093 回答
0

我正在使用 Okio.buffer 从 assets 文件夹中读取图像文件,如下所示:

 BufferedSource img = Okio.buffer(Okio.source(getAssets().open("image.jpg")));

 byte[] image = img.readByteArray();
于 2021-02-14T18:01:23.990 回答