Package loci.common

Class NIOInputStream

    • Constructor Summary

      Constructors 
      Constructor Description
      NIOInputStream​(byte[] array)
      Constructs a random access stream around the given byte array.
      NIOInputStream​(String filename)
      Constructs an NIOInputStream around the given file.
      NIOInputStream​(IRandomAccess handle)
      Constructs a random access stream around the given handle.
    • Field Detail

      • DEFAULT_BLOCK_SIZE

        protected static final int DEFAULT_BLOCK_SIZE
        Block size to use when searching through the stream. This value should not exceed MAX_OVERHEAD!
        See Also:
        Constant Field Values
      • MAX_SEARCH_SIZE

        protected static final int MAX_SEARCH_SIZE
        Maximum number of bytes to search when searching through the stream.
        See Also:
        Constant Field Values
      • filename

        protected String filename
        The file name.
      • file

        protected File file
        The file.
      • channel

        protected Channel channel
        The file channel backed by the random access file.
      • isLittleEndian

        protected boolean isLittleEndian
        Endianness of the stream.
    • Constructor Detail

      • NIOInputStream

        public NIOInputStream​(String filename)
                       throws IOException
        Constructs an NIOInputStream around the given file.
        Parameters:
        filename - the path to a readable file on disk
        Throws:
        IOException - if the path is invalid or unreadable
      • NIOInputStream

        public NIOInputStream​(IRandomAccess handle)
        Constructs a random access stream around the given handle.
        Parameters:
        handle - the IRandomAccess to wrap in a stream
      • NIOInputStream

        public NIOInputStream​(byte[] array)
        Constructs a random access stream around the given byte array.
        Parameters:
        array - the byte array to wrap in a stream
    • Method Detail

      • getInputStream

        public DataInputStream getInputStream()
        Returns:
        the underlying InputStream.
      • setExtend

        public void setExtend​(int extend)
        Sets the number of bytes by which to extend the stream. This only applies to InputStream API methods.
        Parameters:
        extend - the number of bytes by which to extend the stream
      • seek

        public void seek​(long pos)
                  throws IOException
        Seeks to the given offset within the stream.
        Parameters:
        pos - the offset to which to seek
        Throws:
        IOException - if the seek is not successful
      • length

        public long length()
                    throws IOException
        Gets the number of bytes in the file.
        Returns:
        the length of the stream in bytes
        Throws:
        IOException - if the length cannot be retrieved
      • getFilePointer

        public long getFilePointer()
        Returns:
        the current (absolute) file pointer.
      • order

        public void order​(boolean isLittleEndian)
        Sets the endianness of the stream.
        Parameters:
        isLittleEndian - true if the stream order is little-endian
      • isLittleEndian

        public boolean isLittleEndian()
        Returns:
        the endianness of the stream.
      • readString

        public String readString​(String lastChars)
                          throws IOException
        Reads a string ending with one of the characters in the given string.
        Parameters:
        lastChars - string containing possible final characters for the returned string
        Returns:
        the smallest string that ends in one of the characters in lastChars
        Throws:
        IOException - If the maximum length (512 MB) is exceeded.
        See Also:
        findString(String...)
      • findString

        public String findString​(String... terminators)
                          throws IOException
        Reads a string ending with one of the given terminating substrings.
        Parameters:
        terminators - The strings for which to search.
        Returns:
        The string from the initial position through the end of the terminating sequence, or through the end of the stream if no terminating sequence is found.
        Throws:
        IOException - If the maximum search length (512 MB) is exceeded.
      • findString

        public String findString​(boolean saveString,
                                 String... terminators)
                          throws IOException
        Reads or skips a string ending with one of the given terminating substrings.
        Parameters:
        saveString - Whether to collect the string from the current file pointer to the terminating bytes, and return it. If false, returns null.
        terminators - The strings for which to search.
        Returns:
        The string from the initial position through the end of the terminating sequence, or through the end of the stream if no terminating sequence is found, or null if saveString flag is unset.
        Throws:
        IOException - If saveString flag is set and the maximum search length (512 MB) is exceeded.
        IOException - If saveString flag is set and the maximum search length (512 MB) is exceeded.
      • findString

        public String findString​(int blockSize,
                                 String... terminators)
                          throws IOException
        Reads a string ending with one of the given terminating substrings, using the specified block size for buffering.
        Parameters:
        blockSize - The block size to use when reading bytes in chunks.
        terminators - The strings for which to search.
        Returns:
        The string from the initial position through the end of the terminating sequence, or through the end of the stream if no terminating sequence is found.
        Throws:
        IOException - If the maximum search length (512 MB) is exceeded.
      • findString

        public String findString​(boolean saveString,
                                 int blockSize,
                                 String... terminators)
                          throws IOException
        Reads or skips a string ending with one of the given terminating substrings, using the specified block size for buffering.
        Parameters:
        saveString - Whether to collect the string from the current file pointer to the terminating bytes, and return it. If false, returns null.
        blockSize - The block size to use when reading bytes in chunks.
        terminators - The strings for which to search.
        Returns:
        The string from the initial position through the end of the terminating sequence, or through the end of the stream if no terminating sequence is found, or null if saveString flag is unset.
        Throws:
        IOException - If saveString flag is set and the maximum search length (512 MB) is exceeded.
      • readCString

        public String readCString()
                           throws IOException
        Read a string of arbitrary length, terminated by a null char.
        Returns:
        the smallest string such that the last character is a null byte
        Throws:
        IOException - if a null-terminated string is not found
        See Also:
        findString(String...)
      • readString

        public String readString​(int n)
                          throws IOException
        Read a string of length n.
        Parameters:
        n - the number of bytes to read
        Returns:
        a string representing the next n bytes in the stream
        Throws:
        IOException - if there is an error during reading
      • read

        public int read​(byte[] array,
                        int offset,
                        int n)
                 throws IOException
        Read n bytes from the stream into the given array at the specified offset.
        Overrides:
        read in class InputStream
        Throws:
        IOException
      • readFully

        public void readFully​(byte[] array,
                              int offset,
                              int n)
                       throws IOException
        Read n bytes from the stream into the given array at the specified offset.
        Specified by:
        readFully in interface DataInput
        Throws:
        IOException
      • mark

        public void mark​(int readLimit)
        Overrides:
        mark in class InputStream