/**
   * Closes this content.
   *
   * @throws IOException if an error occurs.
   */
  public void close() throws IOException {
    if (finished) {
      return;
    }

    // Close the output stream
    IOException exc = null;
    try {
      content.close();
    } catch (final IOException ioe) {
      exc = ioe;
    }

    // Notify of end of output
    exc = null;
    try {
      onClose();
    } catch (final IOException ioe) {
      exc = ioe;
    }

    finished = true;

    if (exc != null) {
      throw exc;
    }
  }
 public void writeChar(int v) throws IOException {
   content.writeChar(v);
 }
 public void write(byte[] b, int off, int len) throws IOException {
   content.write(b, off, len);
 }
 public void write(int b) throws IOException {
   content.write(b);
 }
 public void seek(long pos) throws IOException {
   content.seek(pos);
 }
 public float readFloat() throws IOException {
   return content.readFloat();
 }
 public String readUTF() throws IOException {
   return content.readUTF();
 }
 public void writeUTF(String str) throws IOException {
   content.writeUTF(str);
 }
 public void readFully(byte[] b) throws IOException {
   content.readFully(b);
 }
 public void writeDouble(double v) throws IOException {
   content.writeDouble(v);
 }
 public void writeChars(String s) throws IOException {
   content.writeChars(s);
 }
 public void writeFloat(float v) throws IOException {
   content.writeFloat(v);
 }
 public void writeLong(long v) throws IOException {
   content.writeLong(v);
 }
 public void writeInt(int v) throws IOException {
   content.writeInt(v);
 }
 public int readInt() throws IOException {
   return content.readInt();
 }
 public void readFully(byte[] b, int off, int len) throws IOException {
   content.readFully(b, off, len);
 }
 public long readLong() throws IOException {
   return content.readLong();
 }
 public int skipBytes(int n) throws IOException {
   return content.skipBytes(n);
 }
 public double readDouble() throws IOException {
   return content.readDouble();
 }
 public boolean readBoolean() throws IOException {
   return content.readBoolean();
 }
 public InputStream getInputStream() throws IOException {
   return content.getInputStream();
 }
 public byte readByte() throws IOException {
   return content.readByte();
 }
 public long getFilePointer() throws IOException {
   return content.getFilePointer();
 }
 public short readShort() throws IOException {
   return content.readShort();
 }
 public long length() throws IOException {
   return content.length();
 }
 public int readUnsignedShort() throws IOException {
   return content.readUnsignedShort();
 }
 public void write(byte[] b) throws IOException {
   content.write(b);
 }
 public char readChar() throws IOException {
   return content.readChar();
 }
 public void writeBoolean(boolean v) throws IOException {
   content.writeBoolean(v);
 }
 public void writeByte(int v) throws IOException {
   content.writeByte(v);
 }