return null; 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); int endIndex = index + separatorAdd; if (prefix >= filename.length() || index < 0 || prefix >= endIndex) { return StringPool.EMPTY; } return filename.substring(prefix, endIndex); }
return null; 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(final String filename, final 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 StringPool.EMPTY; } return filename.substring(prefix, endIndex); }
return null; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return filename; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return null; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return filename; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
public static String doConcat(String basePath, String fullFilenameToAdd, char separator) { int prefix = getPrefixLength(fullFilenameToAdd); if (prefix < 0) { return null; } if (prefix > 0) { return doNormalize(fullFilenameToAdd, separator, true); } if (basePath == null) { return null; } int len = basePath.length(); if (len == 0) { return doNormalize(fullFilenameToAdd, separator, true); } char ch = basePath.charAt(len - 1); if (isSeparator(ch)) { return doNormalize(basePath + fullFilenameToAdd, separator, true); } else { return doNormalize(basePath + '/' + fullFilenameToAdd, separator, true); } }
@Test void testPrefixLength() { assertEquals(0, FileNameUtil.getPrefixLength("a\\b\\c.txt")); assertEquals(1, FileNameUtil.getPrefixLength("\\a\\b\\c.txt")); assertEquals(2, FileNameUtil.getPrefixLength("C:a\\b\\c.txt")); assertEquals(3, FileNameUtil.getPrefixLength("C:\\a\\b\\c.txt")); assertEquals(9, FileNameUtil.getPrefixLength("\\\\server\\a\\b\\c.txt")); assertEquals(0, FileNameUtil.getPrefixLength("a/b/c.txt")); assertEquals(1, FileNameUtil.getPrefixLength("/a/b/c.txt")); assertEquals(2, FileNameUtil.getPrefixLength("~/a/b/c.txt")); assertEquals(2, FileNameUtil.getPrefixLength("~")); assertEquals(6, FileNameUtil.getPrefixLength("~user/a/b/c.txt")); assertEquals(6, FileNameUtil.getPrefixLength("~user")); assertEquals(9, FileNameUtil.getPrefixLength("//server/a/b/c.txt")); assertEquals(9, FileNameUtil.getPrefixLength("//server//a/b/c.txt")); assertEquals(9, FileNameUtil.getPrefixLength("//server//./bar")); }
public static String doConcat(final String basePath, final String fullFilenameToAdd, final char separator) { int prefix = getPrefixLength(fullFilenameToAdd); if (prefix < 0) { return null; } if (prefix > 0) { return doNormalize(fullFilenameToAdd, separator, true); } if (basePath == null) { return null; } int len = basePath.length(); if (len == 0) { return doNormalize(fullFilenameToAdd, separator, true); } char ch = basePath.charAt(len - 1); if (isSeparator(ch)) { return doNormalize(basePath + fullFilenameToAdd, separator, true); } else { return doNormalize(basePath + '/' + fullFilenameToAdd, separator, true); } }
return null; 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(final String filename, final 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 StringPool.EMPTY; } return filename.substring(prefix, endIndex); }
return null; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
return filename; int prefix = getPrefixLength(filename); if (prefix < 0) { return null;
public static String doConcat(final String basePath, final String fullFilenameToAdd, final char separator) { int prefix = getPrefixLength(fullFilenameToAdd); if (prefix < 0) { return null; } if (prefix > 0) { return doNormalize(fullFilenameToAdd, separator, true); } if (basePath == null) { return null; } int len = basePath.length(); if (len == 0) { return doNormalize(fullFilenameToAdd, separator, true); } char ch = basePath.charAt(len - 1); if (isSeparator(ch)) { return doNormalize(basePath + fullFilenameToAdd, separator, true); } else { return doNormalize(basePath + '/' + fullFilenameToAdd, separator, true); } }