Class FileUtils

java.lang.Object
org.apache.solr.util.FileUtils

public class FileUtils extends Object
  • Constructor Details

    • FileUtils

      public FileUtils()
  • Method Details

    • 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")

    • copyFile

      public static void copyFile(File src, File destination) throws IOException
      Throws:
      IOException
    • 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)
    • createDirectories

      public static Path createDirectories(Path path) throws IOException
      Throws:
      IOException
    • 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.
    • normalizeToOsPathSeparator

      public static String normalizeToOsPathSeparator(String path)
      Rewrites path so every path separator matches the current filesystem's separator.

      Both / and \ are replaced with FileSystems.getDefault()'s separator. This is useful before iterating Path components, since on POSIX a \ is otherwise part of a name rather than a separator, so \..\conf\x would be a single component.

      Caveat: on non-Windows platforms this reinterprets any filename that legitimately contains a backslash as a path with additional components. Callers that treat backslash as a valid filename character on POSIX must not use this method.

      Parameters:
      path - the path to normalize
      Returns:
      path normalized with the filesystem's default separator, or null if path was null