Class FileInput

java.lang.Object
com.pnfsoftware.jeb.core.input.FileInput
All Implemented Interfaces:
IInput

@Ser public final class FileInput extends Object implements IInput
An input backed by a file. Entries in zip archives are also supported and must be addressed with a bang, e.g. /some/path/file.zip!a/b/c/data.bin.
  • Field Details

    • SER_FLAG_FULL_PERSISTENCE

      public static final int SER_FLAG_FULL_PERSISTENCE
      This flag indicates that the serialization of this object should include a full bytes copy of the underlying file
      See Also:
  • Constructor Details

  • Method Details

    • getName

      public String getName()
      Description copied from interface: IInput
      Retrieve the optional input name.
      Specified by:
      getName in interface IInput
      Returns:
    • getFile

      public File getFile()
      Retrieve the input file.
      Returns:
      the input file, null if the input is invalid
    • getPath

      public String getPath()
      Retrieve the path to the input file.
      Returns:
    • getPersistedPath

      public String getPersistedPath()
      Return the path element that would be persisted if this element is serialized.
      Returns:
      may be null; may differ from getPath()
    • getPathBase

      public String getPathBase()
      Returns:
      may be null
    • rebase

      public boolean rebase(String base)
      Force a new base and reopen the file. The input must not have a base and the current path must not be an absolute path for this method to succeed. (If that is the case, setBase(String) should be used instead.)
      Parameters:
      base - the forced new base
      Returns:
      success indicator
    • setBase

      public boolean setBase(String base)
      Set the base for this input, assuming it is referring to a valid file (i.e. getFile() is non-null).
      Parameters:
      base - the new base; null to remove any existing base
      Returns:
      success indicator
    • setFile

      public void setFile(File file) throws IOException
      Throws:
      IOException
    • canRead

      public boolean canRead()
      Description copied from interface: IInput
      Determine whether this input is readable.
      Specified by:
      canRead in interface IInput
      Returns:
    • close

      public void close()
      Description copied from interface: IInput
      Close that input and free all resources used by this object.
      Specified by:
      close in interface IInput
    • getCurrentSize

      public long getCurrentSize()
      Description copied from interface: IInput
      Provide the current input size of the input data.
      Specified by:
      getCurrentSize in interface IInput
      Returns:
      the size, -1 if the size cannot be calculated or if an error occurred
    • getHeader

      public ByteBuffer getHeader()
      Description copied from interface: IInput
      Get a read-only, big-endian buffer of the first input bytes. Clients should not attempt to modify or directly access that buffer. The initial position is set to 0. It is recommended that implementations provide at least IInput.IDEAL_HEADER_SIZE bytes.
      Specified by:
      getHeader in interface IInput
      Returns:
      a unique buffer; on error, the returned buffer is null (unlike other methods declared in this interface, this method does not throw IOException)
    • getChannel

      public SeekableByteChannel getChannel() throws IOException
      Description copied from interface: IInput
      Get a seekable read-only channel representing the input. Each call returns a unique channel. Clients should use this method to efficiently read at various locations within the given input.
      Specified by:
      getChannel in interface IInput
      Returns:
      a unique seekable channel
      Throws:
      IOException - on IO error
    • getStream

      public InputStream getStream() throws IOException
      Description copied from interface: IInput
      Get the input stream. Each call returns a unique stream. Implementors should offer this method for convenience. The implementor is responsible for closing non-closed streams when IInput.close() is called.
      Specified by:
      getStream in interface IInput
      Returns:
      a unique input stream
      Throws:
      IOException - on IO error
    • toString

      public String toString()
      Overrides:
      toString in class Object