Class NullByteInput
java.lang.Object
cool.scx.io.NullByteInput
- All Implemented Interfaces:
ByteInput, AutoCloseable
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()关闭这个流, 此方法应该是幂等的.indexOf(ByteIndexer indexer, long maxLength) 在最多 maxLength 个字节中查找匹配 (或直到 EOF).booleanisClosed()检测当前流是否关闭mark()在当前读取位置创建一个标记对象.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 时发生)Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ByteInput
indexOf, indexOf, indexOf, indexOf, indexOf, peek, peekAll, peekAll, peekFully, peekUntil, peekUntil, peekUntil, peekUntil, peekUntil, peekUntil, peekUpTo, read, readAll, readAll, readFully, readUntil, readUntil, readUntil, readUntil, readUntil, readUntil, readUpTo, skip, skipAll, skipFully, skipUpTo
-
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 ByteMatchResult 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在当前读取位置创建一个标记对象.- Specified by:
markin interfaceByteInput- Throws:
AlreadyClosedException
-
isClosed
-
close
Description copied from interface:ByteInput关闭这个流, 此方法应该是幂等的.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceByteInput- Throws:
ScxIOException
-