code: private void accessTempFile(long position) throws IOException {
  		if ((position == 0L) || (position < this.currentPos)) { // in those cases we have to read from scratch
  			this.in = new FileInputStream(this.tempFile);
  			if (this.ca != null) {
  				// decrypt
  				this.in = new CipherInputStream(this.in, this.ciDecrypt);
  			}
  			if (this.compressTempFile) { // decompress it
  				this.in = new GZIPInputStream(this.in, EncryptedCachedDiskStringsTable.compressBufferSize);
  			} else { // configure a buffer for reading it
  				this.in = new BufferedInputStream(this.in, EncryptedCachedDiskStringsTable.compressBufferSize);
  			}
  			this.currentPos = 0L;
  		} else if (position > this.currentPos) {
  			this.in.skip(position - this.currentPos);
  			this.currentPos = position; // attention needs to be updated after read!
  		}
  
  	}
docs: *
  Simulates random access to the tempfile even if not supported due to
  encryption and/or compression
  
  @param position
  @throws IOException