- java.lang.Object
-
- javax.imageio.stream.ImageInputStreamImpl
-
- javax.imageio.stream.MemoryCacheImageInputStream
-
- All Implemented Interfaces:
-
Closeable
,DataInput
,AutoCloseable
,ImageInputStream
public class MemoryCacheImageInputStream extends ImageInputStreamImpl
一个ImageInputStream
的实现,从常规的InputStream
获取它的输入。 存储器缓冲器用于至少缓存丢弃位置和当前读取位置之间的数据。一般地,它是优选使用
FileCacheImageInputStream
从常规读出时InputStream
。 在不可能创建可写入临时文件的情况下提供此类。
-
-
Field Summary
-
Fields inherited from class javax.imageio.stream.ImageInputStreamImpl
bitOffset, byteOrder, flushedPos, streamPos
-
-
构造方法摘要
构造方法 Constructor 描述 MemoryCacheImageInputStream(InputStream stream)
构造一个MemoryCacheImageInputStream
,将从给定的InputStream
读取。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
close()
关闭这个MemoryCacheImageInputStream
,释放缓存。protected void
finalize()
已过时。finalize
方法已被弃用。 为了执行清理,覆盖finalize
子类应被修改为使用替代的清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确地确保按照super.finalize()
中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。void
flushBefore(long pos)
在指示的位置之前丢弃流的初始部分。boolean
isCached()
返回true
因为这ImageInputStream
缓存数据以允许向后搜索。boolean
isCachedFile()
返回false
因为这个ImageInputStream
不保存文件缓存。boolean
isCachedMemory()
返回true
因为这个ImageInputStream
维护一个主内存缓存。int
read()
从流中读取一个字节,并将其作为0和255之间的int
返回。int
read(byte[] b, int off, int len)
从流中读取最多len
个字节,并将其存储到b
,索引号为off
。-
Methods inherited from class javax.imageio.stream.ImageInputStreamImpl
checkClosed, flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, length, mark, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes
-
-
-
-
构造方法详细信息
-
MemoryCacheImageInputStream
public MemoryCacheImageInputStream(InputStream stream)
构造一个MemoryCacheImageInputStream
,将从给定的InputStream
读取。- 参数
-
stream
- 一个InputStream
要阅读。 - 异常
-
IllegalArgumentException
- 如果stream
是null
。
-
-
方法详细信息
-
read
public int read() throws IOException
描述从类复制:ImageInputStreamImpl
从该流读取单个字节,并返回它作为一个int
0到255,并且如果达到EOF,-1
被返回。子类必须为此方法提供一个实现。 子类实现应该在退出之前更新流位置。
在发生读取之前,流内的位偏移必须重置为零。
- Specified by:
-
read
在接口ImageInputStream
- Specified by:
-
read
中的ImageInputStreamImpl
- 结果
-
流中下一个字节的值,如果达到EOF,
-1
。 - 异常
-
IOException
- 如果流已关闭。
-
read
public int read(byte[] b, int off, int len) throws IOException
描述从类复制:ImageInputStreamImpl
读取到len
从流字节,并将其存储到b
开始于索引off
。 如果没有字节可以读取,因为已经到达流的末尾,则返回-1
。在发生读取之前,流内的位偏移必须重置为零。
子类必须为此方法提供一个实现。 子类实现应该在退出之前更新流位置。
- Specified by:
-
read
在接口ImageInputStream
- Specified by:
-
read
在ImageInputStreamImpl
- 参数
-
b
- 要写入的字节数组。 -
off
- 起始位置在b
内写。 -
len
- 要读取的最大字节数。 - 结果
-
实际读取的字节数,或
-1
表示EOF。 - 异常
-
IOException
- 如果发生I / O错误。
-
flushBefore
public void flushBefore(long pos) throws IOException
描述从接口ImageInputStream
复制在指示的位置之前丢弃流的初始部分。 尝试寻求流的冲洗部分内的偏移量将导致一个IndexOutOfBoundsException
。调用
flushBefore
可能允许实现此接口的类释放用于存储数据流的内存或磁盘空间等资源。- Specified by:
-
flushBefore
在接口ImageInputStream
- 重写:
-
flushBefore
中的ImageInputStreamImpl
- 参数
-
pos
- 一个long
其中包含可能被刷新的流前缀的长度。 - 异常
-
IOException
- 如果发生I / O错误。
-
isCached
public boolean isCached()
返回true
因为这ImageInputStream
缓存数据以允许向后搜索。- Specified by:
-
isCached
在接口ImageInputStream
- 重写:
-
isCached
中的ImageInputStreamImpl
- 结果
-
true
。 - 另请参见:
-
isCachedMemory()
,isCachedFile()
-
isCachedFile
public boolean isCachedFile()
返回false
因为这个ImageInputStream
不保存文件缓存。- Specified by:
-
isCachedFile
在接口ImageInputStream
- 重写:
-
isCachedFile
在ImageInputStreamImpl
- 结果
-
false
。 - 另请参见:
-
isCached()
,isCachedMemory()
-
isCachedMemory
public boolean isCachedMemory()
返回true
因为此ImageInputStream
维护主内存缓存。- Specified by:
-
isCachedMemory
在接口ImageInputStream
- 重写:
-
isCachedMemory
在ImageInputStreamImpl
- 结果
-
true
。 - 另请参见:
-
isCached()
,isCachedFile()
-
close
public void close() throws IOException
关闭这个MemoryCacheImageInputStream
,释放缓存。 源InputStream
未关闭。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- Specified by:
-
close
在接口ImageInputStream
- 重写:
-
close
在ImageInputStreamImpl
- 异常
-
IOException
- 如果发生I / O错误。
-
finalize
@Deprecated(since="9") protected void finalize() throws Throwable
已过时。finalize
方法已被弃用。 为了执行清理,覆盖finalize
子类应被修改为使用替代的清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按super.finalize()
中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。在垃圾收集之前完成此对象。 调用close
方法来关闭任何打开的输入源。 不应该从应用程序代码调用此方法。- 重写:
-
finalize
在ImageInputStreamImpl
- 异常
-
Throwable
- 如果在超类最终化期间发生错误。 - 另请参见:
-
WeakReference
,PhantomReference
-
-