Interface ByteInput

All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
DefaultByteInput, NullByteInput

public interface ByteInput extends AutoCloseable

ByteInput

方法分为两大类, 动作方法/请求方法.

  • 动作方法 read / readUpTo / readFully 以及相关的 peek, skip, transferTo 镜像方法.

    • 当 maxLength / length = 0 时, 我们将其看作一种无动作, 均采用统一策略, 立即返回, 不抛异常, 无关流的状态 (即使流以及结束).
    • 在 maxLength / length > 0 时, 读取操作必须产生有效数据 (至少读取一个字节), 这样保证动作不会成为空操作 并消除了 "0 字节读取歧义".
    • EOF (流结束) 被设计为一种明确的信号, 当无法再读取任何字节时, 会抛出 NoMoreDataException. 这保证循环读取的安全性和逻辑自洽性. 同时消除了 EOF 表达性歧义.
    • 严格契约保证用户可以安全循环读取, 同时明确何时流结束.
    • 方法对读取的容忍度分成三个级别:
  • 动作方法 indexOf.

    • 空匹配模式的 indexOf 看作一种无动作 (因其事实上可以匹配任何数据), 恒返回 0.
  • 请求方法 readAll / peekAll / skipAll / transferToAll .

    • 和动作方法唯一的不同在于, 请求方法的调用者一般只关心结果 而不是流的结束状态, 所以即使处于 EOF 状态 也会宽松的返回结果 (空数组 或 0 等).
  • 注意: ByteInput 的 close() 为非幂等操作, 重复 close 将抛 AlreadyClosedException.

Version:
0.0.1
Author:
scx567888