public FileCacheImageInputStream(InputStream stream,
File cacheDir) throws IOException {
if (stream == null) {
throw new IllegalArgumentException("stream == null!");
}
if ((cacheDir != null) && !(cacheDir.isDirectory())) {
throw new IllegalArgumentException("Not a directory!");
}
this.stream = stream;
this.cacheFile =
File.createTempFile("imageio", ".tmp", cacheDir);
this.cache = new RandomAccessFile(cacheFile, "rw");
StreamCloser.addToQueue(this);
disposerRecord = new StreamDisposerRecord(cacheFile, cache);
if (getClass() == FileCacheImageInputStream.class) {
disposerReferent = new Object();
Disposer.addRecord(disposerReferent, disposerRecord);
} else {
disposerReferent = new StreamFinalizer(this);
}
}
Constructs a FileCacheImageInputStream that will read
from a given InputStream.
A temporary file is used as a cache. If
cacheDiris non-null and is a
directory, the file will be created there. If it is
null, the system-dependent default temporary-file
directory will be used (see the documentation for
File.createTempFile for details). Parameters:
stream - an InputStream to read from.
cacheDir - a File indicating where the
cache file should be created, or null to use the
system directory.
Throws:
IllegalArgumentException - if stream is
null.
IllegalArgumentException - if cacheDir is
non-null but is not a directory.
IOException - if a cache file cannot be created.
- exception:
IllegalArgumentException - if stream is
null.
- exception:
IllegalArgumentException - if cacheDir is
non-null but is not a directory.
- exception:
IOException - if a cache file cannot be created.
|