Package com.pnfsoftware.jeb.core.input
Class FileInput
java.lang.Object
com.pnfsoftware.jeb.core.input.FileInput
- All Implemented Interfaces:
IInput
An
IInput backed by a filesystem entry. Nested entries inside zip archives are also
supported and must be addressed with a bang-separated path, for example
/some/path/file.zip!a/b/c/data.bin.-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThis flag indicates that the serialization of this object should include a full bytes copy of the underlying file.Fields inherited from interface com.pnfsoftware.jeb.core.input.IInput
IDEAL_HEADER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionCreate a file input for a filesystem entry or zip entry path.Create a file input for a filesystem entry or zip entry path.Create a file input for a filesystem entry or zip entry path.Create a file input for a filesystem entry or zip entry path.Create a file input for a filesystem entry or zip entry path.Create a file input for a filesystem entry or zip entry path. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanRead()Determine whether this input is readable.voidclose()Close that input and free all resources used by this object.Get a seekable read-only channel representing the input.longProvide the current input size of the input data.getFile()Retrieve the input file.Get a read-only, big-endian buffer of the first input bytes.getName()Retrieve the optional input name.getPath()Retrieve the resolved input path.Retrieve the optional base used to resolvegetPersistedPath().Return the path element that would be persisted if this element is serialized.Get the input stream.booleanForce a new base and reopen the file.booleanSet the base for this input, assuming it is referring to a valid file (i.e.voidAttach a file to this input if it is currently unresolved.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.pnfsoftware.jeb.core.input.IInput
toOutputFile
-
Field Details
-
SER_FLAG_FULL_PERSISTENCE
public static final int SER_FLAG_FULL_PERSISTENCEThis flag indicates that the serialization of this object should include a full bytes copy of the underlying file.- See Also:
-
-
Constructor Details
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
file- target file- Throws:
IOException- on I/O error
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
file- target filehardFail- iftrue, fail immediately when the input cannot be resolved- Throws:
IOException- on I/O error
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
file- target filehardFail- iftrue, fail immediately when the input cannot be resolvedreadHeader- iftrue, eagerly read the input header- Throws:
IOException- on I/O error
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
path- filesystem path or bang-separated zip entry path- Throws:
IOException- on I/O error
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
path- filesystem path or bang-separated zip entry pathhardFail- iftrue, fail immediately when the input cannot be resolved- Throws:
IOException- on I/O error
-
FileInput
Create a file input for a filesystem entry or zip entry path.- Parameters:
path- filesystem path or bang-separated zip entry pathhardFail- iftrue, fail immediately when the input cannot be resolvedreadHeader- iftrue, eagerly read the input header- Throws:
IOException- on I/O error
-
-
Method Details
-
getName
Description copied from interface:IInputRetrieve the optional input name. -
getFile
Retrieve the input file.- Returns:
- the input file, null if the input is invalid
-
getPath
Retrieve the resolved input path.- Returns:
- the absolute or base-resolved filesystem path, or the bang-separated archive entry path, depending on how this input was configured
-
getPersistedPath
Return the path element that would be persisted if this element is serialized.- Returns:
- may be null; may differ from
getPath()
-
getPathBase
Retrieve the optional base used to resolvegetPersistedPath().- Returns:
- the current path base, or
nullif none is set
-
rebase
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
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
Attach a file to this input if it is currently unresolved.- Parameters:
file- file to associate with this input- Throws:
IOException- if a file is already attached or if the new file cannot be processed
-
canRead
public boolean canRead()Description copied from interface:IInputDetermine whether this input is readable. -
close
public void close()Description copied from interface:IInputClose that input and free all resources used by this object. -
getCurrentSize
public long getCurrentSize()Description copied from interface:IInputProvide the current input size of the input data.- Specified by:
getCurrentSizein interfaceIInput- Returns:
- the size, -1 if the size cannot be calculated or if an error occurred
-
getHeader
Description copied from interface:IInputGet 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 leastIInput.IDEAL_HEADER_SIZEbytes.- Specified by:
getHeaderin interfaceIInput- 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
Description copied from interface:IInputGet 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:
getChannelin interfaceIInput- Returns:
- a unique seekable channel
- Throws:
IOException- on IO error
-
getStream
Description copied from interface:IInputGet 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 whenIInput.close()is called.- Specified by:
getStreamin interfaceIInput- Returns:
- a unique input stream
- Throws:
IOException- on IO error
-
toString
-