class AbstractFile implements FileAttributes {

    public InputStream getInputStream(long offset) throws IOException, UnsupportedFileOperationException {
        // Use a random access input stream when available
        if(isFileOperationSupported(FileOperation.RANDOM_READ_FILE)) {
            RandomAccessInputStream rais = getRandomAccessInputStream();
            rais.seek(offset);

            return rais;
        }

        InputStream in = getInputStream();

        // Skip exactly the specified number of bytes
        StreamUtils.skipFully(in, offset);

        return in;
    }

    protected  AbstractFile(FileURL url);

}