gpt4 book ai didi

io - DataInputStream.skipBytes(n) 什么时候不能跳过 n 个字节?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:07 27 4
gpt4 key购买 nike

Sun Documentation for DataInput.skipBytes指出它“试图从输入流中跳过 n 个字节的数据,并丢弃跳过的字节。但是,它可能会跳过一些较小数量的字节,可能为零。这可能是由多种情况中的任何一种引起的;在跳过 n 个字节之前到达文件末尾只是一种可能性。”

  1. 除了到达文件末尾,为什么 skipBytes() 不能跳过正确的字节数? (我使用的 DataInputStream 将包装一个 FileInputStream 或一个 PipedInputStream。)

  2. 如果我确实想跳过 n 个字节并抛出一个 EOFException 如果这导致我转到文件末尾,我应该使用 readFully() 并忽略生成的字节数组?还是有更好的方法?

最佳答案

1) 可能没有那么多数据可供读取(管道的另一端可能还没有发送那么多数据),并且实现类可能是非阻塞的(即它只会返回它可以返回的数据) ,而不是等待足够的数据来满足请求)。

不过,我不知道是否有任何实现实际上以这种方式运行,但接口(interface)设计为允许这样做。

另一种选择是文件在读取过程中被关闭。

2) readFully()(它将始终等待足够的输入否则失败)或在循环中调用 skipBytes()。我认为前者可能更好,除非数组真的很大。

关于io - DataInputStream.skipBytes(n) 什么时候不能跳过 n 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com