FileDocCategorySizeDatePackage
RAMInputStream.javaAPI DocApache Lucene 1.4.31729Tue Mar 30 00:48:06 BST 2004org.apache.lucene.store

RAMInputStream

public class RAMInputStream extends InputStream implements Cloneable
A memory-resident {@link InputStream} implementation.
version
$Id: RAMInputStream.java,v 1.2 2004/03/29 22:48:05 cutting Exp $

Fields Summary
private RAMFile
file
private int
pointer
Constructors Summary
public RAMInputStream(RAMFile f)


     
    file = f;
    length = file.length;
  
Methods Summary
public voidclose()

  
public voidreadInternal(byte[] dest, int destOffset, int len)

    int remainder = len;
    int start = pointer;
    while (remainder != 0) {
      int bufferNumber = start/BUFFER_SIZE;
      int bufferOffset = start%BUFFER_SIZE;
      int bytesInBuffer = BUFFER_SIZE - bufferOffset;
      int bytesToCopy = bytesInBuffer >= remainder ? remainder : bytesInBuffer;
      byte[] buffer = (byte[])file.buffers.elementAt(bufferNumber);
      System.arraycopy(buffer, bufferOffset, dest, destOffset, bytesToCopy);
      destOffset += bytesToCopy;
      start += bytesToCopy;
      remainder -= bytesToCopy;
    }
    pointer += len;
  
public voidseekInternal(long pos)

    pointer = (int)pos;