Class IOUtils

java.lang.Object
org.apache.pdfbox.io.IOUtils

public final class IOUtils extends Object
This class contains various I/O-related methods.
  • Field Details

  • Constructor Details

    • IOUtils

      private IOUtils()
  • Method Details

    • toByteArray

      public static byte[] toByteArray(InputStream in) throws IOException
      Reads the input stream and returns its contents as a byte array.
      Parameters:
      in - the input stream to read from.
      Returns:
      the byte array
      Throws:
      IOException - if an I/O error occurs
    • copy

      public static long copy(InputStream input, OutputStream output) throws IOException
      Copies all the contents from the given input stream to the given output stream.
      Parameters:
      input - the input stream
      output - the output stream
      Returns:
      the number of bytes that have been copied
      Throws:
      IOException - if an I/O error occurs
    • populateBuffer

      public static long populateBuffer(InputStream in, byte[] buffer) throws IOException
      Populates the given buffer with data read from the input stream. If the data doesn't fit the buffer, only the data that fits in the buffer is read. If the data is less than fits in the buffer, the buffer is not completely filled.
      Parameters:
      in - the input stream to read from
      buffer - the buffer to fill
      Returns:
      the number of bytes written to the buffer
      Throws:
      IOException - if an I/O error occurs
    • closeQuietly

      public static void closeQuietly(Closeable closeable)
      Null safe close of the given Closeable suppressing any exception.
      Parameters:
      closeable - to be closed
    • closeAndLogException

      public static IOException closeAndLogException(Closeable closeable, org.apache.commons.logging.Log logger, String resourceName, IOException initialException)
      Try to close an IO resource and log and return if there was an exception.

      An exception is only returned if the IOException passed in is null.

      Parameters:
      closeable - to be closed
      logger - the logger to be used so that logging appears under that log instance
      resourceName - the name to appear in the log output
      initialException - if set, this exception will be returned even where there is another exception while closing the IO resource
      Returns:
      the IOException is there was any but only if initialException is null
    • unmap

      public static void unmap(ByteBuffer buf)
      Unmap memory mapped byte buffers. This is a hack waiting for a proper JVM provided solution expected in java 10 https://bugs.openjdk.java.net/browse/JDK-4724038 The issue here is that even when closed, memory mapped byte buffers hold a lock on the underlying file until GC is executes and this in turns result in an error if the user tries to move or delete the file.
      Parameters:
      buf - the buffer to be unmapped
    • unmapper

      private static Consumer<ByteBuffer> unmapper()
      This is adapted from org.apache.lucene.store.MMapDirectory
      Returns:
    • newBufferCleaner

      private static Consumer<ByteBuffer> newBufferCleaner(Class<?> unmappableBufferClass, MethodHandle unmapper)
    • createMemoryOnlyStreamCache

      public static RandomAccessStreamCache.StreamCacheCreateFunction createMemoryOnlyStreamCache()
      Provides a function to create an instance of a memory only StreamCache using unrestricted main memory. RandomAccessReadWriteBuffer is used as current default implementation.
      Returns:
      a function to create an instance of a memory only StreamCache using unrestricted main memory
    • createTempFileOnlyStreamCache

      public static RandomAccessStreamCache.StreamCacheCreateFunction createTempFileOnlyStreamCache()
      Provides a function to create an instance of a temp file only StreamCache using unrestricted size. ScratchFile is used as current default implementation.
      Returns:
      a function to create an instance of a temp file only StreamCache using unrestricted size