skipBytes和跳过DataInputStream之间的区别?

时间:2010-09-12 12:15:33

标签: java java-me inputstream

我现在想知道,这两种方法有什么区别:

DataInputStream.skipBytesDataInputStream.skip

我知道skip必须来自InputStream和来自skipBytes的{​​{1}}这一事实,但仍有差异 。你知道,在J2ME中使用流时,事情变得相当棘手,所以我需要知道!

从JSR-75中的DataInput返回的Input / DataInput流是否会在处理方面与任何其他此类流有任何不同?

谢谢!

3 个答案:

答案 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 类型,这使您可以跳过更多的字节用于更大的文件。