Class FileTools

java.lang.Object
io.goobi.viewer.controller.FileTools

public final class FileTools extends Object
File I/O utilities.
  • Field Details

  • Method Details

    • getStringFromFilePath

      public static String getStringFromFilePath(String filePath) throws IOException

      getStringFromFilePath.

      Parameters:
      filePath - a String object.
      Returns:
      a String object.
      Throws:
      IOException - if any.
    • getStringFromFile

      public static String getStringFromFile(File file, String encoding) throws IOException
      Read a text file and return content as String
      Parameters:
      file - a File object.
      encoding - The character encoding to use. If null, a standard utf-8 encoding will be used
      Returns:
      a String object.
      Throws:
      IOException - if any.
    • getStringFromFile

      public static String getStringFromFile(File file, String encoding, String convertToEncoding) throws IOException
      Read a text file and return content as String
      Parameters:
      file - a File object.
      encoding - The character encoding to use. If null, a standard utf-8 encoding will be used
      convertToEncoding - Optional target encoding for conversion
      Returns:
      a String object.
      Throws:
      IOException - if any.
    • getCharset

      public static String getCharset(InputStream input) throws IOException
      Uses ICU4J to determine the charset of the given InputStream. Clients are responsible for closing the input stream. Do not re-use this stream for any other operations.
      Parameters:
      input - a InputStream object.
      Returns:
      Detected charset name; null if not detected.
      Throws:
      IOException - if any.
    • getStringFromByteArray

      public static String getStringFromByteArray(byte[] bytes, String encoding)
      Reads a String from a byte array
      Parameters:
      bytes - byte[]
      encoding - a String object.
      Returns:
      a String object.
    • getFileFromString

      public static File getFileFromString(String string, String filePath, String encoding, boolean append) throws IOException
      Simply write a String into a text file.
      Parameters:
      string - The String to write
      filePath - The file path to write to (will be created if it doesn't exist)
      encoding - The character encoding to use. If null, a standard utf-8 encoding will be used
      append - Whether to append the text to an existing file (true), or to overwrite it (false)
      Returns:
      a File object.
      Throws:
      IOException - if any.
    • decompressGzipFile

      public static void decompressGzipFile(File gzipFile, File newFile) throws IOException

      decompressGzipFile.

      Parameters:
      gzipFile - a File object.
      newFile - a File object.
      Throws:
      IOException - if any.
    • compressGzipFile

      public static void compressGzipFile(File file, File gzipFile) throws IOException

      compressGzipFile.

      Parameters:
      file - a File object.
      gzipFile - a File object.
      Throws:
      IOException - if any.
    • compressZipFile

      public static void compressZipFile(List<File> files, File zipFile, Integer level) throws IOException

      compressZipFile.

      Parameters:
      files - Source files
      zipFile - Target file
      level - The compression level of the zip archive. Must be an integer in the range from 0 to 9
      Throws:
      IOException - if any.
    • compressZipFile

      public static void compressZipFile(Map<Path,String> contentMap, File zipFile, Integer level) throws IOException

      compressZipFile.

      Parameters:
      contentMap - a Map object.
      zipFile - a File object.
      level - The compression level of the zip archive. Must be an integer in the range from 0 to 9
      Throws:
      IOException - if any.
    • compressZip

      public static void compressZip(OutputStream output, Map<Path,String> contentMap, Integer level) throws IOException

      compressZipFile.

      Parameters:
      output -
      contentMap - a Map object.
      level - The compression level of the zip archive. Must be an integer in the range from 0 to 9
      Throws:
      IOException - if any.
    • checkPathExistance

      public static boolean checkPathExistance(Path path, boolean create) throws IOException

      checkPathExistance.

      Parameters:
      path - a Path object.
      create - a boolean.
      Returns:
      a boolean.
      Throws:
      IOException - if any.
    • copyStream

      public static void copyStream(OutputStream output, InputStream input) throws IOException

      copyStream.

      Parameters:
      output - a OutputStream object.
      input - a InputStream object.
      Throws:
      IOException - if any.
    • isFolderEmpty

      public static boolean isFolderEmpty(Path folder) throws IOException

      isFolderEmpty.

      Parameters:
      folder - a Path object.
      Returns:
      true if folder empty; false otherwise
      Throws:
      IOException - if any.
    • adaptPathForWindows

      public static String adaptPathForWindows(String path)

      adaptPathForWindows.

      Parameters:
      path - Absolute path to adapt
      Returns:
      Windows-compatible path on Windows; unchanged path elsewhere
    • probeContentType

      public static String probeContentType(URI uri) throws IOException
      Guess the content type (mimeType) of the resource found at the given uri. Content type if primarily guessed from the file extension of the last url path part. If that type is 'text/plain' further analysis is done using the actual content to determine if the actual type is html or xml If the type could not be determined from the file extension, the url response header is probed to return its 'Content-type'
      Parameters:
      uri - uri of the resource. May be a file uri, a relative uri (then assumed to be a relative file path) or a http(s) uri
      Returns:
      The most likely mimeType of the resource found at the given uri
      Throws:
      IOException
    • getMimeTypeFromFile

      public static String getMimeTypeFromFile(Path path) throws IOException
      Throws:
      IOException
    • probeContentType

      public static String probeContentType(String content)
      Guess the content type of the given text, using URLConnection.guessContentTypeFromName(String) If no content type could be determined, 'text/plain' is assumed
      Parameters:
      content -
      Returns:
      Content mime type
    • getCharset

      public static String getCharset(Path file) throws IOException
      Parameters:
      file -
      Returns:
      Charset of the given file
      Throws:
      IOException
    • getBottomFolderFromPathString

      public static String getBottomFolderFromPathString(String pathString)
      Parses the given String as Path and returns the lowest folder name as String. Returns an empty String if the given path is empty or null
      Parameters:
      pathString -
      Returns:
      The folder name, or an empty String if it could not be determined
    • getFilenameFromPathString

      public static String getFilenameFromPathString(String pathString) throws FileNotFoundException
      Parses the given String as Path and returns the last path element (the filename) as String. Returns an empty String if the given path is empty or null
      Parameters:
      pathString -
      Returns:
      The filename, or an empty String if it could not be determined
      Throws:
      FileNotFoundException
    • getPathFromUrlString

      public static Path getPathFromUrlString(String urlString)
      Creates a Path from the given URL in a way that word on Windows machines.
      Parameters:
      urlString - Relative or absolute path or URL, with or without protocol. If a URL parameter is in itself a complete URL, it must be escaped first!
      Returns:
      Constructed Path
    • listFiles

      public static List<Path> listFiles(Path folder, DirectoryStream.Filter<Path> filter)
    • replaceExtension

      public static Path replaceExtension(Path path, String extension)
      Return a path which equals the given path but using the given extension in place of the original one
      Parameters:
      path - any file path
      extension - the extension, without leading '.'
      Returns:
      Given path with replaced file extension
    • isWithin

      public static boolean isWithin(Path path, Path parent)
      Check if a path is a real descendant of the parent path.
      Parameters:
      path -
      parent -
      Returns:
      true if path is a descendant of parent, first resolving any path backtracking with '../' or similar