| /* |
| * SeekableFileInputStream |
| * |
| * Author: Lasse Collin <lasse.collin@tukaani.org> |
| * |
| * This file has been put into the public domain. |
| * You can do whatever you want with this file. |
| */ |
| |
| package org.tukaani.xz; |
| |
| import java.io.File; |
| import java.io.RandomAccessFile; |
| import java.io.IOException; |
| import java.io.FileNotFoundException; |
| |
| /** |
| * Wraps a {@link java.io.RandomAccessFile RandomAccessFile} |
| * in a SeekableInputStream. |
| */ |
| public class SeekableFileInputStream extends SeekableInputStream { |
| /** |
| * The RandomAccessFile that has been wrapped |
| * into a SeekableFileInputStream. |
| */ |
| protected RandomAccessFile randomAccessFile; |
| |
| /** |
| * Creates a new seekable input stream that reads from the specified file. |
| */ |
| public SeekableFileInputStream(File file) throws FileNotFoundException { |
| randomAccessFile = new RandomAccessFile(file, "r"); |
| } |
| |
| /** |
| * Creates a new seekable input stream that reads from a file with |
| * the specified name. |
| */ |
| public SeekableFileInputStream(String name) throws FileNotFoundException { |
| randomAccessFile = new RandomAccessFile(name, "r"); |
| } |
| |
| /** |
| * Creates a new seekable input stream from an existing |
| * <code>RandomAccessFile</code> object. |
| */ |
| public SeekableFileInputStream(RandomAccessFile randomAccessFile) { |
| this.randomAccessFile = randomAccessFile; |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#read() randomAccessFile.read()}. |
| */ |
| public int read() throws IOException { |
| return randomAccessFile.read(); |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#read(byte[]) randomAccessFile.read(buf)}. |
| */ |
| public int read(byte[] buf) throws IOException { |
| return randomAccessFile.read(buf); |
| } |
| |
| /** |
| * Calls |
| * {@link RandomAccessFile#read(byte[],int,int) |
| * randomAccessFile.read(buf, off, len)}. |
| */ |
| public int read(byte[] buf, int off, int len) throws IOException { |
| return randomAccessFile.read(buf, off, len); |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#close() randomAccessFile.close()}. |
| */ |
| public void close() throws IOException { |
| randomAccessFile.close(); |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#length() randomAccessFile.length()}. |
| */ |
| public long length() throws IOException { |
| return randomAccessFile.length(); |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#getFilePointer() |
| randomAccessFile.getFilePointer()}. |
| */ |
| public long position() throws IOException { |
| return randomAccessFile.getFilePointer(); |
| } |
| |
| /** |
| * Calls {@link RandomAccessFile#seek(long) randomAccessFile.seek(long)}. |
| */ |
| public void seek(long pos) throws IOException { |
| randomAccessFile.seek(pos); |
| } |
| } |