/** * Extract the filename from the given path, * e.g. "mypath/myfile.txt" -> "myfile.txt". * @param path the file path (may be <code>null</code>) * @return the extracted filename, or <code>null</code> if none */ public static String getFileName(String path) { if (path == null) { return Strings.EMPTY; } int separatorIndex = indexOfLastSeparator(path); return (separatorIndex != -1 ? path.substring(separatorIndex + 1) : path); }
/** * Extract the part without extension from the given filename, * * e.g. "myfile.txt" -> "myfile" */ public static String getFileNameWithoutExtension(String filename){ if(null == filename){ return Strings.EMPTY; } int extIndex = filename.lastIndexOf(EXTENSION_SEPARATOR); if (extIndex == -1) { return filename; } int folderIndex = indexOfLastSeparator(filename); if (folderIndex > extIndex) { return filename; } return filename.substring(0,extIndex); }
/** * Extract the filename extension from the given path, * e.g. "mypath/myfile.txt" -> "txt". * @param path the file path (may be <code>null</code>) * @return the extracted filename extension, or <code>""</code> if none */ public static String getFileExtension(String path) { if (path == null) { return Strings.EMPTY; } int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR); if (extIndex == -1) { return Strings.EMPTY; } int folderIndex = indexOfLastSeparator(path); if (folderIndex > extIndex) { return Strings.EMPTY; } return path.substring(extIndex + 1); }
/** * Does the work of getting the path. * * @param filename the filename * @param separatorAdd 0 to omit the end separator, 1 to return it * @return the path */ private static String doGetPath(String filename, int separatorAdd) { if (filename == null) { return null; } int prefix = getPrefixLength(filename); if (prefix < 0) { return null; } int index = indexOfLastSeparator(filename); int endIndex = index+separatorAdd; if (prefix >= filename.length() || index < 0 || prefix >= endIndex) { return ""; } return filename.substring(prefix, endIndex); }
int index = indexOfLastSeparator(filename); if (index < 0) { return filename.substring(0, prefix);