code: public byte[] read(int length) throws IOException {
          check();
  
          checkRead(length);
  
          if (length >= Integer.MAX_VALUE) {
              throw new IOException("Length of read area may not exceed " + Integer.MAX_VALUE);
          }
  
          if (this.position()+length > this.getCommittedSize()) {
              throw new IOException("Length of read area may not exceed the committed size of " + this.getCommittedSize());
          }
  
          int intLength = Long.valueOf(length).intValue();
  
          byte[] buffer = new byte[intLength];
  
          if (isClose()) {
              throw new IOException("TAEnabledChanneList ist closed");
          }
  
          long retVal = this.getRandomAccessFile().read(buffer, 0, intLength);
  
          if (retVal < 0) {
              throw new IOException("Channel cannot read " + (position() + intLength) );
          }
          return buffer;
      }
docs: reads the next length bytes starting form the current file position.
  If there are not enough bytes available (from the current position to the visible end of the file) to read the data an exception is thrown.
  
  overflow (position is beyond committed data),  is
  kopiert den Bereich zwischen startPosition und enedPosition der Datei in den ByteBuffer.
  Es wird die Read-methode des RandomAccessFiles genommen, da sich
  herausgestellt hat, dass die Methode im Batchbetrieb etwas schneller
  ist als die Channel-methode.
  Ee werden bytes gelesen fuer die gilt:
  startPosition &le; b &lt; endPosition
  
  @param length umber of bytes to be read
  @return content
  @throws java.io.IOException IO Error