Package org.apache.tika.batch.fs
Class FSUtil
- java.lang.Object
-
- org.apache.tika.batch.fs.FSUtil
-
public class FSUtil extends Object
Utility class to handle some common issues when reading from and writing to a file system (FS).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FSUtil.HANDLE_EXISTING
-
Constructor Summary
Constructors Constructor Description FSUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static boolean
checkThisIsAncestorOfOrSameAsThat(File ancestor, File child)
Deprecated.static boolean
checkThisIsAncestorOfThat(File ancestor, File child)
Deprecated.static File
getOutputFile(File outputRoot, String initialRelativePath, FSUtil.HANDLE_EXISTING handleExisting, String suffix)
Deprecated.static Path
getOutputPath(Path outputRoot, String initialRelativePath, FSUtil.HANDLE_EXISTING handleExisting, String suffix)
Given an output root and an initial relative path, return the output file according to the HANDLE_EXISTING strategystatic Path
resolveRelative(Path p, String other)
Convenience method to ensure that "other" is not an absolute path.
-
-
-
Method Detail
-
checkThisIsAncestorOfThat
@Deprecated public static boolean checkThisIsAncestorOfThat(File ancestor, File child)
Deprecated.
-
checkThisIsAncestorOfOrSameAsThat
@Deprecated public static boolean checkThisIsAncestorOfOrSameAsThat(File ancestor, File child)
Deprecated.
-
getOutputFile
@Deprecated public static File getOutputFile(File outputRoot, String initialRelativePath, FSUtil.HANDLE_EXISTING handleExisting, String suffix) throws IOException
Deprecated.Given an output root and an initial relative path, return the output file according to the HANDLE_EXISTING strategy In the most basic use case, given a root directory "input", a file's relative path "dir1/dir2/fileA.docx", and an output directory "output", the output file would be "output/dir1/dir2/fileA.docx." If HANDLE_EXISTING is set to OVERWRITE, this will not check to see if the output already exists, and the returned file could overwrite an existing file!!! If HANDLE_EXISTING is set to RENAME, this will try to increment a counter at the end of the file name (fileA(2).docx) until there is a file name that doesn't exist. This will return null if handleExisting == HANDLE_EXISTING.SKIP and the candidate file already exists. This will throw an IOException if HANDLE_EXISTING is set to RENAME, and a candidate cannot output file cannot be found after trying to increment the file count (e.g. fileA(2).docx) 10000 times and then after trying 20,000 UUIDs.- Parameters:
outputRoot
- directory root for outputinitialRelativePath
- initial relative path (including file name, which may be renamed)handleExisting
- what to do if the output file existssuffix
- suffix to add to files, can be null- Returns:
- output file or null if no output file should be created
- Throws:
IOException
- See Also:
getOutputPath(Path, String, HANDLE_EXISTING, String)
-
getOutputPath
public static Path getOutputPath(Path outputRoot, String initialRelativePath, FSUtil.HANDLE_EXISTING handleExisting, String suffix) throws IOException
Given an output root and an initial relative path, return the output file according to the HANDLE_EXISTING strategy In the most basic use case, given a root directory "input", a file's relative path "dir1/dir2/fileA.docx", and an output directory "output", the output file would be "output/dir1/dir2/fileA.docx." If HANDLE_EXISTING is set to OVERWRITE, this will not check to see if the output already exists, and the returned file could overwrite an existing file!!! If HANDLE_EXISTING is set to RENAME, this will try to increment a counter at the end of the file name (fileA(2).docx) until there is a file name that doesn't exist. This will return null if handleExisting == HANDLE_EXISTING.SKIP and the candidate file already exists. This will throw an IOException if HANDLE_EXISTING is set to RENAME, and a candidate cannot output file cannot be found after trying to increment the file count (e.g. fileA(2).docx) 10000 times and then after trying 20,000 UUIDs.- Parameters:
outputRoot
- root directory into which to put the pathinitialRelativePath
- relative path including file ("somedir/subdir1/file.doc")handleExisting
- policy for what to do if the output path already existssuffix
- suffix to add to the output path- Returns:
- can return null
- Throws:
IOException
-
resolveRelative
public static Path resolveRelative(Path p, String other)
Convenience method to ensure that "other" is not an absolute path. One could imagine malicious use of this.- Parameters:
p
-other
-- Returns:
- resolved path
- Throws:
IllegalArgumentException
- if "other" is an absolute path
-
-