Package com.pixelmed.dicom

## Class OtherByteAttributeMultipleFilesOnDisk

- java.lang.Object
- - com.pixelmed.dicom.Attribute
  - - com.pixelmed.dicom.OtherByteAttributeMultipleFilesOnDisk

-     public class OtherByteAttributeMultipleFilesOnDisk
      extends Attribute

  A concrete class specializing `Attribute` for Other Byte (OB) attributes whose values are not memory resident but rather are stored in multiple files on disk.

  See Also:
    `Attribute`, `AttributeFactory`, `AttributeList`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long[]` | `byteOffsets` |
    `protected boolean` | `deleteFilesWhenNoLongerNeeded` |
    `protected java.io.File[]` | `files` |
    `protected long[]` | `lengths` |

    - ### Fields inherited from class com.pixelmed.dicom.Attribute

      `valueLength, valueMultiplicity`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t)` | Construct an (empty) attribute.
    `OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t, java.io.File[] files)` | Read an attribute from a set of files.
    `OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t, java.io.File[] files, long[] byteOffsets, long[] lengths)` | Read an attribute from a set of files.
    `OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t, java.lang.String[] fileNames)` | Read an attribute from a set of files.
    `OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t, java.lang.String[] fileNames, long[] byteOffsets, long[] lengths)` | Read an attribute from a set of files.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `deleteFilesWhenNoLongerNeeded()` |
    `protected void` | `finalize()` |
    `long[]` | `getByteOffsets()` |
    `byte[]` | `getByteValues()` | Get the values of this attribute as a byte array.
    `java.io.File[]` | `getFiles()` |
    `long[]` | `getLengths()` |
    `long` | `getPaddedVL()` | Get the value length of this attribute, accounting for the need for even-length padding.
    `byte[]` | `getVR()` | Get the value representation of this attribute (OB).
    `void` | `removeValues()` | Remove any existing values, making the attribute empty (zero length).
    `void` | `setFiles​(java.io.File[] files, long[] byteOffsets, long[] lengths)` |
    `java.lang.String` | `toString​(DicomDictionary dictionary)` | Dump the contents of the attribute as a human-readable string.
    `void` | `write​(DicomOutputStream o)` | Write the entire attribute (including values) to the output stream.

    - ### Methods inherited from class com.pixelmed.dicom.Attribute

      `addValue, addValue, addValue, addValue, addValue, addValue, addValue, getByteValues, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrDefault, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrEmptyString, getDelimitedStringValuesOrNull, getDelimitedStringValuesOrNull, getDelimitedStringValuesOrNull, getDelimitedStringValuesOrNull, getDelimitedStringValuesOrNull, getDelimitedStringValuesOrNull, getDoubleValues, getDoubleValues, getDoubleValues, getElement, getFloatValues, getFloatValues, getFloatValues, getGroup, getIntegerValues, getIntegerValues, getIntegerValues, getLengthOfBaseOfEncodedAttribute, getLengthOfEncodedValue, getLengthOfEntireEncodedAttribute, getLongValues, getLongValues, getLongValues, getOriginalStringValues, getShortValues, getSingleDoubleValueOrDefault, getSingleDoubleValueOrDefault, getSingleDoubleValueOrDefault, getSingleFloatValueOrDefault, getSingleFloatValueOrDefault, getSingleFloatValueOrDefault, getSingleIntegerValueOrDefault, getSingleIntegerValueOrDefault, getSingleIntegerValueOrDefault, getSingleLongValueOrDefault, getSingleLongValueOrDefault, getSingleLongValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrDefault, getSingleStringValueOrEmptyString, getSingleStringValueOrEmptyString, getSingleStringValueOrEmptyString, getSingleStringValueOrEmptyString, getSingleStringValueOrEmptyString, getSingleStringValueOrEmptyString, getSingleStringValueOrNull, getSingleStringValueOrNull, getSingleStringValueOrNull, getSingleStringValueOrNull, getSingleStringValueOrNull, getSingleStringValueOrNull, getStringValues, getStringValues, getStringValues, getStringValues, getStringValues, getStringValues, getTag, getVL, getVM, getVRAsString, isValid, repairValues, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValues, setValues, setValues, setValues, setValues, setValues, setValues, toString, writeBase`

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

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

- - ### Field Detail

    - #### files

          protected java.io.File[] files

    - #### byteOffsets

          protected long[] byteOffsets

    - #### lengths

          protected long[] lengths

    - #### deleteFilesWhenNoLongerNeeded

          protected boolean deleteFilesWhenNoLongerNeeded

  - ### Constructor Detail

    - #### OtherByteAttributeMultipleFilesOnDisk

          public OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t)

      Construct an (empty) attribute.

      Parameters:
        `t` - the tag of the attribute

    - #### OtherByteAttributeMultipleFilesOnDisk

          public OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t,
                                                       java.io.File[] files,
                                                       long[] byteOffsets,
                                                       long[] lengths)
                                                throws java.io.IOException,
                                                       DicomException

      Read an attribute from a set of files.

      Parameters:
        `t` - the tag of the attribute
        `files` - the input files
        `byteOffsets` - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
        `lengths` - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
        `java.io.IOException`
        `DicomException`

    - #### OtherByteAttributeMultipleFilesOnDisk

          public OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t,
                                                       java.lang.String[] fileNames,
                                                       long[] byteOffsets,
                                                       long[] lengths)
                                                throws java.io.IOException,
                                                       DicomException

      Read an attribute from a set of files.

      Parameters:
        `t` - the tag of the attribute
        `fileNames` - the input files
        `byteOffsets` - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
        `lengths` - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
        `java.io.IOException`
        `DicomException`

    - #### OtherByteAttributeMultipleFilesOnDisk

          public OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t,
                                                       java.io.File[] files)
                                                throws java.io.IOException,
                                                       DicomException

      Read an attribute from a set of files.

      Parameters:
        `t` - the tag of the attribute
        `files` - the input files
      Throws:
        `java.io.IOException`
        `DicomException`

    - #### OtherByteAttributeMultipleFilesOnDisk

          public OtherByteAttributeMultipleFilesOnDisk​(AttributeTag t,
                                                       java.lang.String[] fileNames)
                                                throws java.io.IOException,
                                                       DicomException

      Read an attribute from a set of files.

      Parameters:
        `t` - the tag of the attribute
        `fileNames` - the input files
      Throws:
        `java.io.IOException`
        `DicomException`

  - ### Method Detail

    - #### getFiles

          public java.io.File[] getFiles()

      Returns:
        the files containing the data

    - #### getByteOffsets

          public long[] getByteOffsets()

      Returns:
        the per-file byte offsets to the frame data

    - #### getLengths

          public long[] getLengths()

      Returns:
        the per-file lengths of the data for each frame (after the byte offset) in bytes

    - #### setFiles

          public void setFiles​(java.io.File[] files,
                               long[] byteOffsets,
                               long[] lengths)
                        throws java.io.IOException

      Parameters:
        `files` - the input files
        `byteOffsets` - the byte offsets in the files of the start of the data, one entry for each file, or null if 0 for all files
        `lengths` - the lengths in the files from the the start of the data, one entry for each file, or null if the remaining file length after the byteOffset, if any
      Throws:
        `java.io.IOException`

    - #### getPaddedVL

          public long getPaddedVL()

      Description copied from class: `Attribute`

      Get the value length of this attribute, accounting for the need for even-length padding.

      Overrides:
        `getPaddedVL` in class `Attribute`
      Returns:
        the value length (padded to an even length)

    - #### write

          public void write​(DicomOutputStream o)
                     throws DicomException,
                            java.io.IOException

      Description copied from class: `Attribute`

      Write the entire attribute (including values) to the output stream.

      Specified by:
        `write` in class `Attribute`
      Parameters:
        `o` -
      Throws:
        `java.io.IOException`
        `DicomException`

    - #### toString

          public java.lang.String toString​(DicomDictionary dictionary)

      Description copied from class: `Attribute`

      Dump the contents of the attribute as a human-readable string.

      No new line is appended.

      The result is of the form:

           (0xgggg,0xeeee) Name VR=<XX> VL=<0xnnnn> <...>

      For example:

           (0x0018,0x0020) ScanningSequence VR=<CS> VL=<0x2> <GR>

      Overrides:
        `toString` in class `Attribute`
      Parameters:
        `dictionary` - the dictionary to use to look up the name
      Returns:
        a single `String` value

    - #### getByteValues

          public byte[] getByteValues()
                               throws DicomException

      Get the values of this attribute as a byte array.

      This allocates a new array of sufficient length, which may fail if it is too large, and defeats the point of leaving the byte values on disk in the first place. However, it is a fallback for when the caller does not want to go to the trouble of creating a `MappedByteBuffer` from the file, or more likely is not even aware that the attribute values have been left on disk.

      Overrides:
        `getByteValues` in class `Attribute`
      Returns:
        the values as an array of bytes
      Throws:
        `DicomException` - thrown if values cannot be read

    - #### removeValues

          public void removeValues()

      Description copied from class: `Attribute`

      Remove any existing values, making the attribute empty (zero length).

      Specified by:
        `removeValues` in class `Attribute`

    - #### deleteFilesWhenNoLongerNeeded

          public void deleteFilesWhenNoLongerNeeded()

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Throws:
        `java.lang.Throwable`

    - #### getVR

          public byte[] getVR()

      Get the value representation of this attribute (OB).

      Overrides:
        `getVR` in class `Attribute`
      Returns:
        'O','B' in ASCII as a two byte array; see `ValueRepresentation`