InputStream:int / long参数混合

时间:2017-09-22 09:47:44

标签: java inputstream

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 扩展并进行自己的实现时,这似乎很不舒服。

1 个答案:

答案 0 :(得分:3)

您误解了其他参数的用途。

long skip()参数指的是文件中的偏移量,它可以与文件系统可以处理的一样大。

intoffset的{​​{1}}参数是指数组中的偏移量或长度,它们不能大于length凭借语言设计。

同上int的{​​{1}}。

readLimit(a)的mark()返回值无论如何都是不可靠的,(b)是指内存缓冲区中的数据量,它是上面的数组,并且(c)作为int

,不会用于任何实际用途。