Class NullByteInput
java.lang.Object
cool.scx.io.NullByteInput
- All Implemented Interfaces:
ByteInput, AutoCloseable
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()longindexOf(ByteIndexer indexer, long maxLength) 在最多 maxLength 个字节中查找匹配 (或直到 EOF).booleanisClosed()voidmark()标记当前读取位置.bytepeek()查看字节, 行为参考ByteInput.read()<X extends Throwable>
voidpeek(ByteConsumer<X> byteConsumer, long maxLength) 查看字节, 行为参考ByteInput.read(ByteConsumer, long)<X extends Throwable>
voidpeekFully(ByteConsumer<X> byteConsumer, long length) 查看字节, 行为参考ByteInput.readFully(ByteConsumer, long)<X extends Throwable>
voidpeekUpTo(ByteConsumer<X> byteConsumer, long length) 查看字节, 行为参考ByteInput.readUpTo(ByteConsumer, long)byteread()读取单个字节<X extends Throwable>
voidread(ByteConsumer<X> byteConsumer, long maxLength) 最多读取 maxLength 个字节, 可能少于 maxLength (即使尚未遇到 EOF, 如底层缓冲区不足)<X extends Throwable>
voidreadFully(ByteConsumer<X> byteConsumer, long length) 恰好读取 length 个字节<X extends Throwable>
voidreadUpTo(ByteConsumer<X> byteConsumer, long length) 尽量读取 length 个字节, 可能少于 length (仅在 EOF 时发生)voidreset()将读取位置恢复到上一次 mark() 时的状态.
-
Constructor Details
-
NullByteInput
public NullByteInput()
-
-
Method Details
-
read
Description copied from interface:ByteInput读取单个字节
- 如果 当前没有数据可读 (立即遇到 EOF), 则会抛出 NoMoreDataException
- Specified by:
readin interfaceByteInput- Throws:
ScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
read
public <X extends Throwable> void read(ByteConsumer<X> byteConsumer, long maxLength) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput最多读取 maxLength 个字节, 可能少于 maxLength (即使尚未遇到 EOF, 如底层缓冲区不足)
- 如果 maxLength = 0, 立即返回 (不抛出异常, 即使在 EOF 状态)
- 如果 maxLength > 0, 至少读取 1 个字节.
- 如果 数据不足 (读取过程中遇到 EOF), 则停止读取
- 如果 当前没有数据可读 (立即遇到 EOF), 则会抛出 NoMoreDataException
- Specified by:
readin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
readUpTo
public <X extends Throwable> void readUpTo(ByteConsumer<X> byteConsumer, long length) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput尽量读取 length 个字节, 可能少于 length (仅在 EOF 时发生)
- 如果 length = 0, 立即返回 (不抛出异常, 即使在 EOF 状态)
- 如果 length > 0, 至少读取 1 个字节.
- 如果 数据不足 (读取过程中遇到 EOF), 则停止读取
- 如果 当前没有数据可读 (立即遇到 EOF), 则会抛出 NoMoreDataException
- Specified by:
readUpToin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
readFully
public <X extends Throwable> void readFully(ByteConsumer<X> byteConsumer, long length) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput恰好读取 length 个字节
- 如果 length = 0, 立即返回且不抛出异常 (即使在 EOF 状态)
- 如果 length > 0. 一定读取 length 个字节.
- 如果 数据不足 (读取过程中遇到 EOF), 则会抛出 NoMoreDataException
- 如果 当前没有数据可读 (立即遇到 EOF), 则会抛出 NoMoreDataException
- Specified by:
readFullyin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
peek
Description copied from interface:ByteInput查看字节, 行为参考ByteInput.read()- Specified by:
peekin interfaceByteInput- Throws:
ScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
peek
public <X extends Throwable> void peek(ByteConsumer<X> byteConsumer, long maxLength) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput查看字节, 行为参考ByteInput.read(ByteConsumer, long)- Specified by:
peekin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
peekUpTo
public <X extends Throwable> void peekUpTo(ByteConsumer<X> byteConsumer, long length) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput查看字节, 行为参考ByteInput.readUpTo(ByteConsumer, long)- Specified by:
peekUpToin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
peekFully
public <X extends Throwable> void peekFully(ByteConsumer<X> byteConsumer, long length) throws X, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput查看字节, 行为参考ByteInput.readFully(ByteConsumer, long)- Specified by:
peekFullyin interfaceByteInput- Throws:
XScxIOExceptionAlreadyClosedExceptionNoMoreDataException
-
indexOf
public long indexOf(ByteIndexer indexer, long maxLength) throws NoMatchFoundException, ScxIOException, AlreadyClosedException, NoMoreDataException Description copied from interface:ByteInput在最多 maxLength 个字节中查找匹配 (或直到 EOF).
- 如果 indexer 是 空匹配模式. (意味着没有消费数据的能力和意义)
- 在任意情况下都返回 0. (恒为 0)
- 如果 indexer 不是 空匹配模式.
- 如果 maxLength = 0, 抛 NoMatchFoundException (恒 NoMatch, 因为这是不可能完成的任务).
- 如果 maxLength > 0. (正常逻辑)
- 如果在边界达成条件内仍未匹配到 (如达到 maxLength限制 或 读取过程中遇到 EOF) 抛出 NoMatchFoundException.
- 如果 当前没有数据可读 (立即遇到 EOF), 则会抛出 NoMoreDataException.
- Specified by:
indexOfin interfaceByteInput- Throws:
NoMatchFoundExceptionScxIOExceptionAlreadyClosedExceptionNoMoreDataException
- 如果 indexer 是 空匹配模式. (意味着没有消费数据的能力和意义)
-
mark
Description copied from interface:ByteInput标记当前读取位置.
- 每次调用 mark() 会覆盖上一次的标记 (即不支持嵌套 mark)
- Specified by:
markin interfaceByteInput- Throws:
AlreadyClosedException
-
reset
Description copied from interface:ByteInput将读取位置恢复到上一次 mark() 时的状态.
- 若尚未调用 mark(), 则无效果.
- 调用 reset() 不会清除标记, 可重复 reset().
- Specified by:
resetin interfaceByteInput- Throws:
AlreadyClosedException
-
isClosed
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceByteInput- Throws:
ScxIOException
-