- java.lang.Object
-
- javax.imageio.stream.ImageInputStreamImpl
-
- javax.imageio.stream.ImageOutputStreamImpl
-
- javax.imageio.stream.FileCacheImageOutputStream
-
- All Implemented Interfaces:
-
Closeable
,DataInput
,DataOutput
,AutoCloseable
,ImageInputStream
,ImageOutputStream
public class FileCacheImageOutputStream extends ImageOutputStreamImpl
一个ImageOutputStream
的实现,将其输出写入常规的OutputStream
。 一个文件用于缓存数据,直到它被刷新到输出流。
-
-
Field Summary
-
Fields inherited from class javax.imageio.stream.ImageInputStreamImpl
bitOffset, byteOrder, flushedPos, streamPos
-
-
构造方法摘要
构造方法 Constructor 描述 FileCacheImageOutputStream(OutputStream stream, File cacheDir)
构造一个FileCacheImageOutputStream
,它将写入给定的outputStream
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
close()
关闭此FileCacheImageOutputStream
。void
flushBefore(long pos)
在指示的位置之前丢弃流的初始部分。boolean
isCached()
返回true
因为这个ImageOutputStream
缓存数据,以便向后ImageOutputStream
。boolean
isCachedFile()
返回true
因为这个ImageOutputStream
维护一个文件缓存。boolean
isCachedMemory()
返回false
因为这个ImageOutputStream
不维护主内存缓存。long
length()
返回-1L
以表示该流具有未知长度。int
read()
从流中读取一个字节,并将其作为int
返回0到255之间。int
read(byte[] b, int off, int len)
从流中读取最多len
个字节,并将其存储到b
,索引号为off
。void
seek(long pos)
设置当前流位置,并将位偏移重置为0。void
write(byte[] b, int off, int len)
在当前位置写入一串字节。void
write(int b)
将当前位置的单个字节写入流。-
Methods inherited from interface javax.imageio.stream.ImageInputStream
flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, 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, setBitOffset, setByteOrder, skipBytes, skipBytes
-
Methods inherited from class javax.imageio.stream.ImageInputStreamImpl
checkClosed, finalize, flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, 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, setBitOffset, setByteOrder, skipBytes, skipBytes
-
Methods inherited from class javax.imageio.stream.ImageOutputStreamImpl
flushBits, write, writeBit, writeBits, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeChars, writeDouble, writeDoubles, writeFloat, writeFloats, writeInt, writeInts, writeLong, writeLongs, writeShort, writeShorts, writeUTF
-
-
-
-
构造方法详细信息
-
FileCacheImageOutputStream
public FileCacheImageOutputStream(OutputStream stream, File cacheDir) throws IOException
构造一个FileCacheImageOutputStream
,它将写入给定的outputStream
。临时文件用作缓存。 如果
cacheDir
是非null
并且是一个目录,该文件将在那里创建。 如果是null
,将使用系统相关的默认临时文件目录(有关详细信息,请参阅File.createTempFile
的文档)。- 参数
-
stream
- 要写的OutputStream
。 -
cacheDir
- 一个File
指示应该创建缓存文件的位置,或null
使用系统目录。 - 异常
-
IllegalArgumentException
- 如果stream
是null
。 -
IllegalArgumentException
- 如果cacheDir
是非null
但不是一个目录。 -
IOException
- 如果无法创建缓存文件。
-
-
方法详细信息
-
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错误。
-
write
public void write(int b) throws IOException
描述从接口ImageOutputStream
复制将当前位置的单个字节写入流。b
的24个高位被忽略。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
来保证这一点。- Specified by:
-
write
在接口DataOutput
- Specified by:
-
write
在接口ImageOutputStream
- Specified by:
-
write
在ImageOutputStreamImpl
- 参数
-
b
- 要写入低8位的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
write
public void write(byte[] b, int off, int len) throws IOException
描述从接口ImageOutputStream
复制在当前位置写入一串字节。 如果len
为0,则不会写入。 字节b[off]
首先写入,然后字节b[off + 1]
等等。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
来保证这一点。- Specified by:
-
write
在接口DataOutput
- Specified by:
-
write
在接口ImageOutputStream
- Specified by:
-
write
在ImageOutputStreamImpl
- 参数
-
b
- 要写入的byte
的数组。 -
off
- 数据中的起始偏移量。 -
len
-byte
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
length
public long length()
描述从类别复制ImageInputStreamImpl
返回-1L
以表示该流具有未知长度。 子类必须覆盖此方法以提供实际的长度信息。- Specified by:
-
length
在接口ImageInputStream
- 重写:
-
length
在ImageInputStreamImpl
- 结果
- -1L表示未知长度。
-
seek
public void seek(long pos) throws IOException
设置当前流位置,并将位偏移量重置为0.合法查找文件的结尾; 一个EOFException
只有在执行读取时才会被抛出。 在执行写入之前,文件长度不会增加。- Specified by:
-
seek
在接口ImageInputStream
- 重写:
-
seek
在ImageInputStreamImpl
- 参数
-
pos
- 包含所需文件指针位置的long
。 - 异常
-
IndexOutOfBoundsException
- 如果pos
小于冲洗位置。 -
IOException
- 如果发生任何其他I / O错误。
-
isCached
public boolean isCached()
返回true
因为这个ImageOutputStream
缓存数据,以便向后ImageOutputStream
。- Specified by:
-
isCached
在接口ImageInputStream
- 重写:
-
isCached
在ImageInputStreamImpl
- 结果
-
true
。 - 另请参见:
-
isCachedMemory()
,isCachedFile()
-
isCachedFile
public boolean isCachedFile()
返回true
因为这个ImageOutputStream
维护一个文件缓存。- Specified by:
-
isCachedFile
在接口ImageInputStream
- 重写:
-
isCachedFile
在ImageInputStreamImpl
- 结果
-
true
。 - 另请参见:
-
isCached()
,isCachedMemory()
-
isCachedMemory
public boolean isCachedMemory()
返回false
因为这个ImageOutputStream
没有维护主内存缓存。- Specified by:
-
isCachedMemory
在接口ImageInputStream
- 重写:
-
isCachedMemory
在ImageInputStreamImpl
- 结果
-
false
。 - 另请参见:
-
isCached()
,isCachedFile()
-
close
public void close() throws IOException
关闭此FileCacheImageOutputStream
。 所有挂起的数据都被刷新到输出,缓存文件被关闭并被删除。 目的地OutputStream
未关闭。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- Specified by:
-
close
在接口ImageInputStream
- 重写:
-
close
在ImageInputStreamImpl
- 异常
-
IOException
- 如果发生错误。
-
flushBefore
public void flushBefore(long pos) throws IOException
描述从接口ImageInputStream
复制在指示的位置之前丢弃流的初始部分。 试图寻求在流的冲洗部分内的偏移量将导致IndexOutOfBoundsException
。调用
flushBefore
可能允许实现此接口的类释放用于存储数据流的内存或磁盘空间等资源。- Specified by:
-
flushBefore
在接口ImageInputStream
- Specified by:
-
flushBefore
在接口ImageOutputStream
- 重写:
-
flushBefore
在ImageInputStreamImpl
- 参数
-
pos
- 一个long
其中包含可能被刷新的流前缀的长度。 - 异常
-
IOException
- 如果发生I / O错误。
-
-