/** * 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. Null bytes inside string will be removed */ private static String doGetPath(final String filename, final int separatorAdd) { if (filename == null) { return null; } final int prefix = getPrefixLength(filename); if (prefix < 0) { return null; } final int index = indexOfLastSeparator(filename); final int endIndex = index+separatorAdd; if (prefix >= filename.length() || index < 0 || prefix >= endIndex) { return ""; } final String path = filename.substring(prefix, endIndex); failIfNullBytePresent(path); return path; }
return null; final int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return null; int len = getPrefixLength(filename); if (len < 0) { return null;
return filename; final int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return null; final int len = getPrefixLength(filename); if (len < 0) { return null;
/** * 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); if (prefix >= filename.length() || index < 0) { return ""; } return filename.substring(prefix, index + separatorAdd); }
/** * Does the work of getting the path. * * @param filename the filename * @param includeSeparator true to include the end separator * @return the path */ private static String doGetFullPath(String filename, boolean includeSeparator) { if (filename == null) { return null; } int prefix = getPrefixLength(filename); if (prefix < 0) { return null; } if (prefix >= filename.length()) { if (includeSeparator) { return getPrefix(filename); // add end slash if necessary } else { return filename; } } int index = indexOfLastSeparator(filename); if (index < 0) { return filename.substring(0, prefix); } int end = index + (includeSeparator ? 1 : 0); return filename.substring(0, end); }
return filename; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
public static String getValidFilename(String filename) { if (LangUtils.isValueBlank(filename)) { return null; } if (isSystemWindows()) { if (!filename.contains("\\\\")) { String[] parts = filename.substring(FilenameUtils.getPrefixLength(filename)).split(Pattern.quote(File.separator)); for (String part : parts) { if (INVALID_FILENAME_PATTERN.matcher(part).find()) { throw new FacesException("Invalid filename: " + filename); } } } else { throw new FacesException("Invalid filename: " + filename); } } String name = FilenameUtils.getName(filename); String extension = FilenameUtils.EXTENSION_SEPARATOR_STR + FilenameUtils.getExtension(filename); if (extension.equals(FilenameUtils.EXTENSION_SEPARATOR_STR)) { throw new FacesException("File must have an extension"); } else if (name.isEmpty() || extension.equals(name)) { throw new FacesException("Filename can not be the empty string"); } return name; }
@Test public void testGetPrefixLength() { assertEquals(-1, FilenameUtils.getPrefixLength(null)); assertEquals(-1, FilenameUtils.getPrefixLength(":")); assertEquals(-1, FilenameUtils.getPrefixLength("1:\\a\\b\\c.txt")); assertEquals(-1, FilenameUtils.getPrefixLength("1:")); assertEquals(-1, FilenameUtils.getPrefixLength("1:a")); assertEquals(-1, FilenameUtils.getPrefixLength("\\\\\\a\\b\\c.txt")); assertEquals(-1, FilenameUtils.getPrefixLength("\\\\a")); assertEquals(0, FilenameUtils.getPrefixLength("")); assertEquals(1, FilenameUtils.getPrefixLength("\\")); assertEquals(2, FilenameUtils.getPrefixLength("C:")); assertEquals(3, FilenameUtils.getPrefixLength("C:\\")); assertEquals(9, FilenameUtils.getPrefixLength("//server/")); assertEquals(2, FilenameUtils.getPrefixLength("~")); assertEquals(2, FilenameUtils.getPrefixLength("~/")); assertEquals(6, FilenameUtils.getPrefixLength("~user")); assertEquals(6, FilenameUtils.getPrefixLength("~user/")); assertEquals(0, FilenameUtils.getPrefixLength("a\\b\\c.txt")); assertEquals(1, FilenameUtils.getPrefixLength("\\a\\b\\c.txt")); assertEquals(2, FilenameUtils.getPrefixLength("C:a\\b\\c.txt")); assertEquals(3, FilenameUtils.getPrefixLength("C:\\a\\b\\c.txt")); assertEquals(9, FilenameUtils.getPrefixLength("\\\\server\\a\\b\\c.txt")); assertEquals(0, FilenameUtils.getPrefixLength("a/b/c.txt")); assertEquals(1, FilenameUtils.getPrefixLength("/a/b/c.txt")); assertEquals(3, FilenameUtils.getPrefixLength("C:/a/b/c.txt")); assertEquals(9, FilenameUtils.getPrefixLength("//server/a/b/c.txt"));
final int prefix = getPrefixLength(fullFilenameToAdd); if (prefix < 0) { return null;
int prefix = getPrefixLength(fullFilenameToAdd); if (prefix < 0) { return null;
private String getFinalName(String name, Map<String, byte[]> zout) { name = name.replaceAll("\u0000", " "); String normalizedName = FilenameUtils.normalize(name); if (normalizedName == null) { normalizedName = FilenameUtils.getName(name); } if (normalizedName == null) { normalizedName = count.toString(); } //strip off initial C:/ or ~/ or / int prefixLength = FilenameUtils.getPrefixLength(normalizedName); if (prefixLength > -1) { normalizedName = normalizedName.substring(prefixLength); } if (zout.containsKey(normalizedName)) { return UUID.randomUUID().toString()+"-"+normalizedName; } return normalizedName; }
int prefixLength = FilenameUtils.getPrefixLength(normalizedName); if (prefixLength > -1) { normalizedName = normalizedName.substring(prefixLength);
int prefix = FilenameUtils.getPrefixLength(name); if (prefix > -1) { name = name.substring(prefix);
/** * Check whether a path is absolute. * @param path Path to operate on * @return True if the path is absolute, false otherwise. * @see <a href="http://stackoverflow.com/questions/1025285">StackOverflow</a> */ public static boolean isAbsolutePath(String path) { return FilenameUtils.getPrefixLength(path) != 0; }
private boolean isAbsolute(final String path) { return FilenameUtils.getPrefixLength(path) != 0; }
private static boolean isAbsolute(String path) { return FilenameUtils.getPrefixLength(path) != 0; }
private String toUnix(String path) { String result = FilenameUtils.separatorsToUnix(path); int prefixLength = FilenameUtils.getPrefixLength(result); return prefixLength <= 1 ? result : result.substring(prefixLength - 1); }
/** * Add Selenese file. (test-suite or test-case) * * @param filename Selenese file name. * @param commandFactory command factory. */ public void addSeleneseFile(String filename, ICommandFactory commandFactory) { if (FilenameUtils.getPrefixLength(filename) == 0 && parentDir != null) filename = PathUtils.concat(parentDir, filename); else filename = PathUtils.normalize(filename); addSelenese(Parser.parse(filename, commandFactory)); }