Class FileUtils


  • public class FileUtils
    extends Object
    • Constructor Detail

      • FileUtils

        public FileUtils()
    • Method Detail

      • resolvePath

        public static File resolvePath​(File base,
                                       String path)
        Resolves a path relative a base directory.

        This method does what "new File(base,path)" Should do, if it wasn't completely lame: If path is absolute, then a File for that path is returned; if it's not absolute, then a File is returned using "path" as a child of "base")

      • sync

        public static void sync​(File fullFile)
                         throws IOException
        Copied from Lucene's FSDirectory.fsync(String)
        Parameters:
        fullFile - the File to be synced to disk
        Throws:
        IOException - if the file could not be synced
      • fileExists

        public static boolean fileExists​(String filePathString)
      • isPathAChildOfParent

        public static boolean isPathAChildOfParent​(Path parent,
                                                   Path potentialChild)
        Checks whether a child path falls under a particular parent

        Useful for validating user-provided relative paths, which generally aren't expected to "escape" a given parent/root directory. Parent and child paths are "normalized" by Path.normalize(). This removes explicit backtracking (e.g. "../") though it will not resolve symlinks if any are present in the provided Paths, so some forms of parent "escape" remain undetected. Paths needn't exist as a file or directory for comparison purposes.

        Note, this method does not consult the file system

        Parameters:
        parent - the path of a 'parent' node. Path must be syntactically valid but needn't exist.
        potentialChild - the path of a potential child. Typically obtained via: parent.resolve(relativeChildPath). Path must be syntactically valid but needn't exist.
        Returns:
        true if 'potentialChild' nests under the provided 'parent', false otherwise.