diff options
Diffstat (limited to 'awt/javax/imageio/stream/FileCacheImageOutputStream.java')
| -rw-r--r-- | awt/javax/imageio/stream/FileCacheImageOutputStream.java | 196 | 
1 files changed, 0 insertions, 196 deletions
| diff --git a/awt/javax/imageio/stream/FileCacheImageOutputStream.java b/awt/javax/imageio/stream/FileCacheImageOutputStream.java deleted file mode 100644 index 135afab3733e..000000000000 --- a/awt/javax/imageio/stream/FileCacheImageOutputStream.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - *  Licensed to the Apache Software Foundation (ASF) under one or more - *  contributor license agreements.  See the NOTICE file distributed with - *  this work for additional information regarding copyright ownership. - *  The ASF licenses this file to You under the Apache License, Version 2.0 - *  (the "License"); you may not use this file except in compliance with - *  the License.  You may obtain a copy of the License at - * - *     http://www.apache.org/licenses/LICENSE-2.0 - * - *  Unless required by applicable law or agreed to in writing, software - *  distributed under the License is distributed on an "AS IS" BASIS, - *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *  See the License for the specific language governing permissions and - *  limitations under the License. - */ - -package javax.imageio.stream; - -import java.io.IOException; -import java.io.File; -import java.io.OutputStream; -import java.io.RandomAccessFile; - -/** - * The FileCacheImageOutputStream class is an implementation of - * ImageOutputStream that writes to its OutputStream using a temporary file as a - * cache. - *  - * @since Android 1.0 - */ -public class FileCacheImageOutputStream extends ImageOutputStreamImpl { - -    /** -     * The Constant IIO_TEMP_FILE_PREFIX. -     */ -    static final String IIO_TEMP_FILE_PREFIX = "iioCache"; - -    /** -     * The Constant MAX_BUFFER_LEN. -     */ -    static final int MAX_BUFFER_LEN = 1048575; // 1 MB - is it not too much? - -    /** -     * The os. -     */ -    private OutputStream os; - -    /** -     * The file. -     */ -    private File file; - -    /** -     * The raf. -     */ -    private RandomAccessFile raf; - -    /** -     * Instantiates a FileCacheImageOutputStream. -     *  -     * @param stream -     *            the OutputStream for writing. -     * @param cacheDir -     *            the cache directory where the cache file will be created. -     * @throws IOException -     *             if an I/O exception has occurred. -     */ -    public FileCacheImageOutputStream(OutputStream stream, File cacheDir) throws IOException { -        if (stream == null) { -            throw new IllegalArgumentException("stream == null!"); -        } -        os = stream; - -        if (cacheDir == null || cacheDir.isDirectory()) { -            file = File.createTempFile(IIO_TEMP_FILE_PREFIX, null, cacheDir); -            file.deleteOnExit(); -        } else { -            throw new IllegalArgumentException("Not a directory!"); -        } - -        raf = new RandomAccessFile(file, "rw"); -    } - -    @Override -    public void close() throws IOException { -        flushBefore(raf.length()); -        super.close(); -        raf.close(); -        file.delete(); -    } - -    @Override -    public boolean isCached() { -        return true; -    } - -    @Override -    public boolean isCachedFile() { -        return true; -    } - -    @Override -    public boolean isCachedMemory() { -        return false; -    } - -    @Override -    public void write(int b) throws IOException { -        flushBits(); // See the flushBits method description - -        raf.write(b); -        streamPos++; -    } - -    @Override -    public void write(byte[] b, int off, int len) throws IOException { -        flushBits(); // See the flushBits method description - -        raf.write(b, off, len); -        streamPos += len; -    } - -    @Override -    public int read() throws IOException { -        bitOffset = 0; // Should reset - -        int res = raf.read(); -        if (res >= 0) { -            streamPos++; -        } - -        return res; -    } - -    @Override -    public int read(byte[] b, int off, int len) throws IOException { -        bitOffset = 0; - -        int numRead = raf.read(b, off, len); -        if (numRead > 0) { -            streamPos += numRead; -        } - -        return numRead; -    } - -    @Override -    public void flushBefore(long pos) throws IOException { -        long readFromPos = flushedPos; -        super.flushBefore(pos); - -        long bytesToRead = pos - readFromPos; -        raf.seek(readFromPos); - -        if (bytesToRead < MAX_BUFFER_LEN) { -            byte buffer[] = new byte[(int)bytesToRead]; -            raf.readFully(buffer); -            os.write(buffer); -        } else { -            byte buffer[] = new byte[MAX_BUFFER_LEN]; -            while (bytesToRead > 0) { -                int count = (int)Math.min(MAX_BUFFER_LEN, bytesToRead); -                raf.readFully(buffer, 0, count); -                os.write(buffer, 0, count); -                bytesToRead -= count; -            } -        } - -        os.flush(); - -        if (pos != streamPos) { -            raf.seek(streamPos); // Reset the position -        } -    } - -    @Override -    public void seek(long pos) throws IOException { -        if (pos < flushedPos) { -            throw new IndexOutOfBoundsException(); -        } - -        raf.seek(pos); -        streamPos = raf.getFilePointer(); -        bitOffset = 0; -    } - -    @Override -    public long length() { -        try { -            return raf.length(); -        } catch (IOException e) { -            return -1L; -        } -    } -} | 
