FileDocCategorySizeDatePackage
FileImageInputStream.javaAPI DocJava SE 5 API3570Fri Aug 26 14:57:32 BST 2005javax.imageio.stream

FileImageInputStream

public class FileImageInputStream extends ImageInputStreamImpl
An implementation of ImageInputStream that gets its input from a File or RandomAccessFile. The file contents are assumed to be stable during the lifetime of the object.
version
0.5

Fields Summary
private RandomAccessFile
raf
Constructors Summary
public FileImageInputStream(File f)
Constructs a FileImageInputStream that will read from a given File.

The file contents must not change between the time this object is constructed and the time of the last call to a read method.

param
f a File to read from.
exception
IllegalArgumentException if f is null.
exception
SecurityException if a security manager exists and does not allow read access to the file.
exception
FileNotFoundException if f is a directory or cannot be opened for reading for any other reason.
exception
IOException if an I/O error occurs.

        if (f == null) {
            throw new IllegalArgumentException("f == null!");
        }
        this.raf = new RandomAccessFile(f, "r");
    
public FileImageInputStream(RandomAccessFile raf)
Constructs a FileImageInputStream that will read from a given RandomAccessFile.

The file contents must not change between the time this object is constructed and the time of the last call to a read method.

param
raf a RandomAccessFile to read from.
exception
IllegalArgumentException if raf is null.

        if (raf == null) {
            throw new IllegalArgumentException("raf == null!");
        }
        this.raf = raf;
    
Methods Summary
public voidclose()

        super.close();
        raf.close();
    
public longlength()
Returns the length of the underlying file, or -1 if it is unknown.

return
the file length as a long, or -1.

        try {
            checkClosed();
            return raf.length();
        } catch (IOException e) {
            return -1L;
        }
    
public intread()

        checkClosed();
        bitOffset = 0;
        int val = raf.read();
        if (val != -1) {
            ++streamPos;
        }
        return val;
    
public intread(byte[] b, int off, int len)

        checkClosed();
        bitOffset = 0;
        int nbytes = raf.read(b, off, len);
        if (nbytes != -1) {
            streamPos += nbytes;
        }
        return nbytes;
    
public voidseek(long pos)

        checkClosed();
        if (pos < flushedPos) {
            throw new IndexOutOfBoundsException("pos < flushedPos!");
        }
        bitOffset = 0;
        raf.seek(pos);
        streamPos = raf.getFilePointer();