org.apache.poi.openxml4j.opc.internal

## Class MemoryPackagePart

- java.lang.Object
- - org.apache.poi.openxml4j.opc.PackagePart
  - - org.apache.poi.openxml4j.opc.internal.MemoryPackagePart

- All Implemented Interfaces:
    java.lang.Comparable<PackagePart>, RelationshipSource

      public final class MemoryPackagePart
      extends PackagePart

  Memory version of a package part. Use to
  Version:
    1.0
  Author:
    Julien Chable

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected byte[]` | `data` Storage for the part data.

    - ### Fields inherited from class org.apache.poi.openxml4j.opc.PackagePart

      `_container, _contentType, _partName`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MemoryPackagePart(OPCPackage pack, PackagePartName partName, java.lang.String contentType)` Constructor.
    `MemoryPackagePart(OPCPackage pack, PackagePartName partName, java.lang.String contentType, boolean loadRelationships)` Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Allows sub-classes to clean up before new data is added.
    `void` | `close()` Close this part : flush this part, close the input stream and output stream.
    `void` | `flush()` Flush the content of this part.
    `protected java.io.InputStream` | `getInputStreamImpl()` Method that gets the input stream for this part.
    `protected java.io.OutputStream` | `getOutputStreamImpl()` Method that gets the output stream for this part.
    `long` | `getSize()`
    `boolean` | `load(java.io.InputStream ios)` Load the content of this part.
    `boolean` | `save(java.io.OutputStream os)` Save the content of this part and the associated relationships part (if this part own at least one relationship) into the specified output stream.

    - ### Methods inherited from class org.apache.poi.openxml4j.opc.PackagePart

      `addExternalRelationship, addExternalRelationship, addRelationship, addRelationship, addRelationship, addRelationship, clearRelationships, compareTo, findExistingRelation, getContentType, getContentTypeDetails, getInputStream, getOutputStream, getPackage, getPartName, getRelatedPart, getRelationship, getRelationships, getRelationshipsByType, hasRelationships, isDeleted, isRelationshipExists, isRelationshipPart, removeRelationship, setContentType, setDeleted, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### data

          protected byte[] data

      Storage for the part data.

  - ### Constructor Detail

    - #### MemoryPackagePart

          public MemoryPackagePart(OPCPackage pack,
                                   PackagePartName partName,
                                   java.lang.String contentType)
                            throws InvalidFormatException

      Constructor.
      Parameters:
        `pack` - The owner package.
        `partName` - The part name.
        `contentType` - The content type.
      Throws:
        `InvalidFormatException` - If the specified URI is not OPC compliant.

    - #### MemoryPackagePart

          public MemoryPackagePart(OPCPackage pack,
                                   PackagePartName partName,
                                   java.lang.String contentType,
                                   boolean loadRelationships)
                            throws InvalidFormatException

      Constructor.
      Parameters:
        `pack` - The owner package.
        `partName` - The part name.
        `contentType` - The content type.
        `loadRelationships` - Specify if the relationships will be loaded.
      Throws:
        `InvalidFormatException` - If the specified URI is not OPC compliant.

  - ### Method Detail

    - #### getInputStreamImpl

          protected java.io.InputStream getInputStreamImpl()

      Description copied from class: `PackagePart`
      Method that gets the input stream for this part.
      Specified by:
        `getInputStreamImpl` in class `PackagePart`
      Returns:
        input stream for this part

    - #### getOutputStreamImpl

          protected java.io.OutputStream getOutputStreamImpl()

      Description copied from class: `PackagePart`
      Method that gets the output stream for this part.
      Specified by:
        `getOutputStreamImpl` in class `PackagePart`
      Returns:
        output stream for this part

    - #### getSize

          public long getSize()

      Overrides:
        `getSize` in class `PackagePart`
      Returns:
        The length of the part in bytes, or -1 if not known

    - #### clear

          public void clear()

      Description copied from class: `PackagePart`
      Allows sub-classes to clean up before new data is added.
      Overrides:
        `clear` in class `PackagePart`

    - #### save

          public boolean save(java.io.OutputStream os)
                       throws OpenXML4JException

      Description copied from class: `PackagePart`
      Save the content of this part and the associated relationships part (if this part own at least one relationship) into the specified output stream.
      Specified by:
        `save` in class `PackagePart`
      Parameters:
        `os` - Output stream to save this part.
      Returns:
        boolean flag that shows if the save succeeded
      Throws:
        `OpenXML4JException` - If any exception occur.

    - #### load

          public boolean load(java.io.InputStream ios)
                       throws InvalidFormatException

      Description copied from class: `PackagePart`
      Load the content of this part.
      Specified by:
        `load` in class `PackagePart`
      Parameters:
        `ios` - The input stream of the content to load.
      Returns:
        true if the content has been successfully loaded, else false.
      Throws:
        `InvalidFormatException` - Throws if the content format is invalid.

    - #### close

          public void close()

      Description copied from class: `PackagePart`
      Close this part : flush this part, close the input stream and output stream. After this method call, the part must be available for packaging.
      Specified by:
        `close` in class `PackagePart`

    - #### flush

          public void flush()

      Description copied from class: `PackagePart`
      Flush the content of this part. If the input stream and/or output stream as in a waiting state to read or write, the must to empty their respective buffer.
      Specified by:
        `flush` in class `PackagePart`

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.