Class FixedLengthBlockOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable, java.nio.channels.Channel, java.nio.channels.WritableByteChannel

    public class FixedLengthBlockOutputStream
    extends java.io.OutputStream
    implements java.nio.channels.WritableByteChannel
    This class supports writing to an OutputStream or WritableByteChannel in fixed length blocks.

    It can be be used to support output to devices such as tape drives that require output in this format. If the final block does not have enough content to fill an entire block, the output will be padded to a full block size.

    This class can be used to support TAR,PAX, and CPIO blocked output to character special devices. It is not recommended that this class be used unless writing to such devices, as the padding serves no useful purpose in such cases.

    This class should normally wrap a FileOutputStream or associated WritableByteChannel directly. If there is an intervening filter that modified the output, such as a CompressorOutputStream, or performs its own buffering, such as BufferedOutputStream, output to the device may no longer be of the specified size.

    Any content written to this stream should be self-delimiting and should tolerate any padding added to fill the last block.

    Since:
    1.15
    • Constructor Summary

      Constructors 
      Constructor Description
      FixedLengthBlockOutputStream​(java.io.OutputStream os, int blockSize)
      Create a fixed length block output stream with given destination stream and block size
      FixedLengthBlockOutputStream​(java.nio.channels.WritableByteChannel out, int blockSize)
      Create a fixed length block output stream with given destination writable byte channel and block size
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      void flushBlock()
      Potentially pads and then writes the current block to the underlying stream.
      boolean isOpen()  
      void write​(byte[] b, int offset, int length)  
      void write​(int b)  
      int write​(java.nio.ByteBuffer src)  
      • Methods inherited from class java.io.OutputStream

        flush, nullOutputStream, write
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • FixedLengthBlockOutputStream

        public FixedLengthBlockOutputStream​(java.io.OutputStream os,
                                            int blockSize)
        Create a fixed length block output stream with given destination stream and block size
        Parameters:
        os - The stream to wrap.
        blockSize - The block size to use.
      • FixedLengthBlockOutputStream

        public FixedLengthBlockOutputStream​(java.nio.channels.WritableByteChannel out,
                                            int blockSize)
        Create a fixed length block output stream with given destination writable byte channel and block size
        Parameters:
        out - The writable byte channel to wrap.
        blockSize - The block size to use.
    • Method Detail

      • write

        public void write​(int b)
                   throws java.io.IOException
        Specified by:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] b,
                          int offset,
                          int length)
                   throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public int write​(java.nio.ByteBuffer src)
                  throws java.io.IOException
        Specified by:
        write in interface java.nio.channels.WritableByteChannel
        Throws:
        java.io.IOException
      • isOpen

        public boolean isOpen()
        Specified by:
        isOpen in interface java.nio.channels.Channel
      • flushBlock

        public void flushBlock()
                        throws java.io.IOException
        Potentially pads and then writes the current block to the underlying stream.
        Throws:
        java.io.IOException - if writing fails
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.nio.channels.Channel
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.OutputStream
        Throws:
        java.io.IOException