Class BoundedInputStream.Builder

  • All Implemented Interfaces:
    IOSupplier<BoundedInputStream>
    Enclosing class:
    BoundedInputStream

    public static class BoundedInputStream.Builder
    extends AbstractStreamBuilder<BoundedInputStream,​T>
    Builds a new BoundedInputStream.

    By default, a BoundedInputStream is unbound; so make sure to call BoundedInputStream.AbstractBuilder.setMaxCount(long).

    You can find out how many bytes this stream has seen so far by calling BoundedInputStream.getCount(). This value reflects bytes read and skipped.

    Using a ServletInputStream

    A ServletInputStream can block if you try to read content that isn't there because it doesn't know whether the content hasn't arrived yet or whether the content has finished. Initialize an BoundedInputStream with the Content-Length sent in the ServletInputStream's header, this stop it from blocking, providing it's been sent with a correct content length in the first place.

    Using NIO

    
     BoundedInputStream s = BoundedInputStream.builder()
       .setPath(Paths.get("MyFile.xml"))
       .setMaxCount(1024)
       .setPropagateClose(false)
       .get();
     
     

    Using IO

    
     BoundedInputStream s = BoundedInputStream.builder()
       .setFile(new File("MyFile.xml"))
       .setMaxCount(1024)
       .setPropagateClose(false)
       .get();
     
     

    Counting Bytes

    You can set the running count when building, which is most useful when starting from another stream:

    
     InputStream in = ...;
     BoundedInputStream s = BoundedInputStream.builder()
       .setInputStream(in)
       .setCount(12)
       .setMaxCount(1024)
       .setPropagateClose(false)
       .get();
     
     
    Since:
    2.16.0
    See Also:
    get()
    • Constructor Detail

      • Builder

        public Builder()
    • Method Detail

      • setCount

        public T setCount​(long count)
        Sets the current number of bytes counted.

        Useful when building from another stream to carry forward a read count.

        Default is 0, negative means 0.

        Parameters:
        count - The current number of bytes counted.
        Returns:
        this.
      • setMaxCount

        public T setMaxCount​(long maxCount)
        Sets the maximum number of bytes to return.

        Default is -1, negative means unbound.

        Parameters:
        maxCount - The maximum number of bytes to return.
        Returns:
        this.
      • setPropagateClose

        public T setPropagateClose​(boolean propagateClose)
        Sets whether the BoundedInputStream.close() method should propagate to the underling InputStream.

        Default is true.

        Parameters:
        propagateClose - true if calling BoundedInputStream.close() propagates to the close() method of the underlying stream or false if it does not.
        Returns:
        this.