Class 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 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)
      • 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