de.unkrig.commons.file.filetransformation
Interface FileTransformer
- All Known Implementing Classes:
- DirectoryTransformer, FileContentsTransformer, ProxyFileTransformer, SelectiveFileTransformer
public interface FileTransformer
- See Also:
transform(String, File, File, Mode)
|
Method Summary |
void |
transform(java.lang.String path,
java.io.File in,
java.io.File out,
FileTransformer.Mode mode)
Creates the file out, based on the file in. |
NOT_IDENTICAL
static final java.lang.RuntimeException NOT_IDENTICAL
- Thrown by
transform(String, File, File, FileTransformer.Mode.CHECK); indicates that the output created by transform(String, File, File, FileTransformer.Mode.TRANSFORM) would be identical with the input.
THROW_NOT_IDENTICAL
static final java.lang.Runnable THROW_NOT_IDENTICAL
- A
Runnable that simply throws NOT_IDENTICAL.
transform
void transform(java.lang.String path,
java.io.File in,
java.io.File out,
FileTransformer.Mode mode)
throws java.io.IOException
- Creates the file
out, based on the file in. Iff in.equals(out) ('in-place
transformation'), then the original file remains unchanged, is modified, or replaced with a new file.
The precise contract is as follows:
-
If
mode == Mode.CHECK, then this method merely checks whether the file would be
changed, and, if so, completes normally, otherwise it throws NOT_IDENTICAL. (Parameter out
is ignored.)
-
Otherwise, if
!in.equals(out) ('out-of-place transformation'), out is created, based
on in. (Parameter mode is ignored.) (If this method throws an exception, then it must not
leave a file out behind.)
-
Otherwise, the file is left unchanged, is modified, or is replaced with a new file. If
mode ==
Mode.CHECK_AND_TRANSFORM, then the method attempts to avoid unnecessary i/o and processing by first checking
whether the file requires any modifications before applying them. (If this method throws an exception, then
it must revert the file to its original state as far as is reasonably possible.)
/li>
- Parameters:
path - A text designating the input file; typically, but not necessarily identical with in.getPath()
- Throws:
java.lang.RuntimeException - NOT_IDENTICAL iff mode == FileTransformer.Mode.CHECK and the output produced
by transform(String, File, File, Mode) would not be identical with the input
java.io.IOException- See Also:
NOT_IDENTICAL,
FileTransformer.Mode.TRANSFORM,
FileTransformer.Mode.CHECK,
FileTransformer.Mode.CHECK_AND_TRANSFORM