在 InputStream 上,我们可以找到几种方法:
public abstract int read() throws IOException;
public int read(byte b[]) throws IOException;
public int read(byte b[], int off, int len) throws IOException
public long skip(long n) throws IOException
public int available() throws IOException
public synchronized void mark(int readlimit)
除 skip()之外的所有方法都处理 int 参数。只有 skip()方法接受 long 参数。将此参数设置为长而不是 int 的重点是什么?从 InputStream 扩展并进行自己的实现时,这似乎很不舒服。
答案 0 :(得分:3)
您误解了其他参数的用途。
long
skip()
参数指的是文件中的偏移量,它可以与文件系统可以处理的一样大。
int
和offset
的{{1}}参数是指数组中的偏移量或长度,它们不能大于length
凭借语言设计。
同上int
的{{1}}。
readLimit
(a)的mark()
返回值无论如何都是不可靠的,(b)是指内存缓冲区中的数据量,它是上面的数组,并且(c)作为int