Class FileIODecorator

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected FileIO delegate
      File I/O delegate
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Truncates current file to zero length and resets current file position to zero.
      void close()
      Closes current file.
      void force()
      Forces any updates of this file to be written to the storage device that contains it.
      void force​(boolean withMetadata)
      Forces any updates of this file to be written to the storage device that contains it.
      int getFileSystemBlockSize()
      long getSparseSize()
      MappedByteBuffer map​(int sizeBytes)
      Allocates memory mapped buffer for this file with given size.
      long position()
      Returns current file position.
      void position​(long newPosition)
      Sets new current file position.
      int punchHole​(long pos, int len)
      int read​(byte[] buf, int off, int len)
      Reads a up to length bytes from this file into the buffer.
      int read​(ByteBuffer destBuf)
      Reads a sequence of bytes from this file into the destinationBuffer.
      int read​(ByteBuffer destBuf, long position)
      Reads a sequence of bytes from this file into the destinationBuffer starting from specified file position.
      long size()
      Returns current file size in bytes.
      long transferFrom​(ReadableByteChannel src, long position, long count)
      long transferTo​(long position, long count, WritableByteChannel target)
      This method will transfers the content of file to the specified channel.
      int write​(byte[] buf, int off, int len)
      Writes length bytes from the buffer starting at offset off to this file.
      int write​(ByteBuffer srcBuf)
      Writes a sequence of bytes to this file from the sourceBuffer.
      int write​(ByteBuffer srcBuf, long position)
      Writes a sequence of bytes to this file from the sourceBuffer starting from specified file position
    • Field Detail

      • delegate

        protected final FileIO delegate
        File I/O delegate
    • Constructor Detail

      • FileIODecorator

        public FileIODecorator​(FileIO delegate)
        Parameters:
        delegate - File I/O delegate
    • Method Detail

      • getFileSystemBlockSize

        public int getFileSystemBlockSize()
        Returns:
        File system block size or negative value if unknown.
      • getSparseSize

        public long getSparseSize()
        Returns:
        Approximate system dependent size of the storage or negative value if not supported.
        See Also:
        FileIO.punchHole(long, int)
      • punchHole

        public int punchHole​(long pos,
                             int len)
        Parameters:
        pos - Starting file position.
        len - Number of bytes to free.
        Returns:
        The actual freed size or negative value if not supported.
      • position

        public long position()
                      throws IOException
        Returns current file position.
        Returns:
        Current file position, a non-negative integer counting the number of bytes from the beginning of the file to the current position.
        Throws:
        IOException - If some I/O error occurs.
      • position

        public void position​(long newPosition)
                      throws IOException
        Sets new current file position.
        Parameters:
        newPosition - The new position, a non-negative integer counting the number of bytes from the beginning of the file.
        Throws:
        IOException - If some I/O error occurs.
      • read

        public int read​(ByteBuffer destBuf)
                 throws IOException
        Reads a sequence of bytes from this file into the destinationBuffer.
        Parameters:
        destBuf - Destination byte buffer.
        Returns:
        Number of read bytes, or -1 if the given position is greater than or equal to the file's current size
        Throws:
        IOException - If some I/O error occurs.
      • read

        public int read​(ByteBuffer destBuf,
                        long position)
                 throws IOException
        Reads a sequence of bytes from this file into the destinationBuffer starting from specified file position.
        Parameters:
        destBuf - Destination byte buffer.
        position - Starting position of file.
        Returns:
        Number of read bytes, possibly zero, or -1 if the given position is greater than or equal to the file's current size
        Throws:
        IOException - If some I/O error occurs.
      • read

        public int read​(byte[] buf,
                        int off,
                        int len)
                 throws IOException
        Reads a up to length bytes from this file into the buffer.
        Parameters:
        buf - Destination byte array.
        off - The start offset in array b at which the data is written.
        len - Maximum number of bytes read.
        Returns:
        Number of read bytes.
        Throws:
        IOException - If some I/O error occurs.
      • write

        public int write​(ByteBuffer srcBuf)
                  throws IOException
        Writes a sequence of bytes to this file from the sourceBuffer.
        Parameters:
        srcBuf - Source buffer.
        Returns:
        Number of written bytes.
        Throws:
        IOException - If some I/O error occurs.
      • write

        public int write​(ByteBuffer srcBuf,
                         long position)
                  throws IOException
        Writes a sequence of bytes to this file from the sourceBuffer starting from specified file position
        Parameters:
        srcBuf - Source buffer.
        position - Starting file position.
        Returns:
        Number of written bytes.
        Throws:
        IOException - If some I/O error occurs.
      • write

        public int write​(byte[] buf,
                         int off,
                         int len)
                  throws IOException
        Writes length bytes from the buffer starting at offset off to this file.
        Parameters:
        buf - Source byte array.
        off - Start offset in the buffer.
        len - Number of bytes to write.
        Returns:
        Number of written bytes.
        Throws:
        IOException - If some I/O error occurs.
      • map

        public MappedByteBuffer map​(int sizeBytes)
                             throws IOException
        Allocates memory mapped buffer for this file with given size.
        Parameters:
        sizeBytes - Size of buffer.
        Returns:
        Instance of mapped byte buffer.
        Throws:
        IOException - If some I/O error occurs.
      • force

        public void force()
                   throws IOException
        Forces any updates of this file to be written to the storage device that contains it.
        Throws:
        IOException - If some I/O error occurs.
      • force

        public void force​(boolean withMetadata)
                   throws IOException
        Forces any updates of this file to be written to the storage device that contains it.
        Parameters:
        withMetadata - If true force also file metadata.
        Throws:
        IOException - If some I/O error occurs.
      • size

        public long size()
                  throws IOException
        Returns current file size in bytes.
        Returns:
        File size.
        Throws:
        IOException - If some I/O error occurs.
      • clear

        public void clear()
                   throws IOException
        Truncates current file to zero length and resets current file position to zero.
        Throws:
        IOException - If some I/O error occurs.
      • close

        public void close()
                   throws IOException
        Closes current file.
        Throws:
        IOException - If some I/O error occurs.
      • transferTo

        public long transferTo​(long position,
                               long count,
                               WritableByteChannel target)
                        throws IOException
        This method will transfers the content of file to the specified channel. This is a synchronous operation, so performing it on asynchronous channels makes no sense and not provied.
        Parameters:
        position - The relative offset of the file where the transfer begins from.
        count - The number of bytes to be transferred.
        target - Destination channel of the transfer.
        Returns:
        Count of bytes which was successfully transferred.
        Throws:
        IOException - If fails.
      • transferFrom

        public long transferFrom​(ReadableByteChannel src,
                                 long position,
                                 long count)
                          throws IOException
        Parameters:
        src - The source channel.
        position - The position within the file at which the transfer is to begin.
        count - The maximum number of bytes to be transferred.
        Returns:
        The number of bytes, possibly zero, that were actually transferred.
        Throws:
        IOException - If fails.