我现在想知道,这两种方法有什么区别:
DataInputStream.skipBytes
和DataInputStream.skip
。
我知道skip
必须来自InputStream
和来自skipBytes
的{{1}}这一事实,但仍有差异 。你知道,在J2ME中使用流时,事情变得相当棘手,所以我需要知道!
从JSR-75中的DataInput
返回的Input / DataInput流是否会在处理方面与任何其他此类流有任何不同?
谢谢!
答案 0 :(得分:4)
此外,skip()需要long作为参数,因此您可以一次跳过多个字节。对大文件有用
答案 1 :(得分:2)
来自DataInputStream
:
public final int skipBytes(int n) throws IOException {
int total = 0;
int cur = 0;
while ((total<n) && ((cur = (int) in.skip(n-total)) > 0)) {
total += cur;
}
return total;
}
从代码中可以看出,skipBytes
使用了skip (InputStream.skip)
我唯一可以说的是,如果包装的inputStream中的数据(DataInputStream中的InputStream)被另一个线程更改,则skipBytes和skip的结果可能会有所不同。但如果您的应用程序只使用单线程,则skipBytes和skip是相同的。
答案 2 :(得分:0)
如果您尝试使用 .skip()返回而不是前进。您会注意到,它将成功返回字节数。但是,如果您尝试使用 skipBytes()返回字节,则说您想将10个字节向后移 dis.skipBytes(n),它将无法正常工作,它将保持不变。因此,总而言之,这是 skip 和 skipBytes 之间的主要区别。另一个区别是 skip(long i), skipBytes(int i),skip具有 long 类型,这使您可以跳过更多的字节用于更大的文件。