Class DummyInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.deepjava.runtime.util.DummyInputStream
-
- All Implemented Interfaces:
Closeable,AutoCloseable,Modified
public class DummyInputStream extends InputStream
A readable source of bytes. This is a simple helper class.System.inwill open such aDummyInputStreamas a default. A user will later redirectSystem.into a physically available device.
-
-
Constructor Summary
Constructors Constructor Description DummyInputStream()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intavailable()Returns an estimated number of bytes that can be read or skipped without blocking for more input.intread()Reads a single byte from this stream and returns it as an integer in the range from 0 to 255.-
Methods inherited from class java.io.InputStream
close, mark, markSupported, read, read, reset
-
-
-
-
Method Detail
-
available
public int available()
Description copied from class:InputStreamReturns an estimated number of bytes that can be read or skipped without blocking for more input.Note that this method provides such a weak guarantee that it is not very useful in practice.
Firstly, the guarantee is "without blocking for more input" rather than "without blocking": a read may still block waiting for I/O to complete — the guarantee is merely that it won't have to wait indefinitely for data to be written. The result of this method should not be used as a license to do I/O on a thread that shouldn't be blocked.
Secondly, the result is a conservative estimate and may be significantly smaller than the actual number of bytes available. In particular, an implementation that always returns 0 would be correct. In general, callers should only use this method if they'd be satisfied with treating the result as a boolean yes or no answer to the question "is there definitely data ready?".
Thirdly, the fact that a given number of bytes is "available" does not guarantee that a read or skip will actually read or skip that many bytes: they may read or skip fewer.
It is particularly important to realize that you must not use this method to size a container and assume that you can read the entirety of the stream without needing to resize the container. Such callers should probably write everything they read to a
ByteArrayOutputStreamand convert that to a byte array. Alternatively, if you're reading from a file,File.length()returns the current length of the file (though assuming the file's length can't change may be incorrect, reading a file is inherently racy).The default implementation of this method in
InputStreamalways returns 0. Subclasses should override this method if they are able to indicate the number of bytes available.- Overrides:
availablein classInputStream- Returns:
- the estimated number of bytes available
-
read
public int read()
Description copied from class:InputStreamReads a single byte from this stream and returns it as an integer in the range from 0 to 255. Returns -1 if the end of the stream has been reached. Blocks until one byte has been read, the end of the source stream is detected or an exception is thrown.- Specified by:
readin classInputStream- Returns:
- Byte read.
-
-