Class FilenameUtils


  • public class FilenameUtils
    extends Object
    • Field Detail

      • RESERVED_FILENAME_CHARACTERS

        public static final char[] RESERVED_FILENAME_CHARACTERS
        Reserved characters
    • Constructor Detail

      • FilenameUtils

        public FilenameUtils()
    • Method Detail

      • normalize

        public static String normalize​(String name)
        Scans the given file name for reserved characters on different OSs and file systems and returns a sanitized version of the name with the reserved chars replaced by their hexadecimal value.

        For example why?.zip will be converted into why%3F.zip

        Parameters:
        name - the file name to be normalized - NOT NULL
        Returns:
        the normalized file name
        Throws:
        IllegalArgumentException - if name is null
      • getName

        public static String getName​(String path)
        This is a duplication of the algorithm and functionality available in commons io FilenameUtils. If Java's File were able handle Windows file paths correctly in linux, we wouldn't need this.

        The goal of this is to get a filename from a path. The package parsers and some other embedded doc extractors could put anything into TikaCoreProperties.RESOURCE_NAME_KEY.

        If a careless client used that filename as if it were a filename and not a path when writing embedded files, bad things could happen. Consider: "../../../my_ppt.ppt".

        Consider using this in combination with normalize(String).

        Parameters:
        path - path to strip
        Returns:
        empty string or a filename, never null
      • getSuffixFromPath

        public static String getSuffixFromPath​(String path)
        This includes the period, e.g. ".pdf"
        Parameters:
        path -
        Returns:
        the suffix or an empty string if one could not be found