com.github.junrar.io.ReadOnlyAccessByteArray Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junrar Show documentation
Show all versions of junrar Show documentation
rar decompression library in plain java
The newest version!
/*
* Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved.
* Original author: Edmund Wagner
* Creation date: 30.05.2007
*
* Source: $HeadURL$
* Last changed: $LastChangedDate$
*
* the unrar licence applies to all junrar source and binary distributions
* you are not allowed to use this source to re-create the RAR compression algorithm
*
* Here some html entities which can be used for escaping javadoc tags:
* "&": "&" or "&"
* "<": "<" or "<"
* ">": ">" or ">"
* "@": "@"
*/
package com.github.junrar.io;
import java.io.EOFException;
import java.io.IOException;
/**
* A File like access to a byte array.
* (seek and read certain number of bytes)
*
* @author $LastChangedBy$
* @version $LastChangedRevision$
*/
public class ReadOnlyAccessByteArray implements IReadOnlyAccess{
private int positionInFile;
private byte[] file;
/**
* Initialize with byte[ ]
* @param file the file given as byte array
*/
public ReadOnlyAccessByteArray(byte[] file){
if(file == null){
throw new NullPointerException("file must not be null!!");
}
this.file = file;
this.positionInFile = 0;
}
public long getPosition() throws IOException {
return positionInFile;
}
public void setPosition(long pos) throws IOException {
if (pos < file.length && pos >= 0){
this.positionInFile = (int)pos;
}
else{
throw new EOFException();
}
}
/** Read a single byte of data. */
public int read() throws IOException {
return file[positionInFile++];
}
/**
* Read up to count bytes to the specified buffer.
*/
public int read(byte[] buffer, int off, int count) throws IOException {
int read = Math.min(count, file.length-positionInFile);
System.arraycopy(file, positionInFile, buffer, off, read);
positionInFile += read;
return read;
}
public int readFully(byte[] buffer, int count) throws IOException {
if(buffer == null ){
throw new NullPointerException("buffer must not be null");
}
if(count == 0){
throw new IllegalArgumentException("cannot read 0 bytes ;-)");
}
int read = Math.min(count, file.length-(int)positionInFile-1);
System.arraycopy(file, (int)positionInFile, buffer, 0, read );
positionInFile+=read;
return read;
}
public void close() throws IOException {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy