scolebourne 2004/10/30 15:16:23 Modified: io/src/test/org/apache/commons/io FilenameUtilsTestCase.java io/src/java/org/apache/commons/io FilenameUtils.java Log: Add separatorsToXxx methods to FilenameUtils Revision Changes Path 1.13 +38 -1 jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java Index: FilenameUtilsTestCase.java =================================================================== RCS file: /home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- FilenameUtilsTestCase.java 24 Oct 2004 18:44:51 -0000 1.12 +++ FilenameUtilsTestCase.java 30 Oct 2004 22:16:23 -0000 1.13 @@ -274,4 +274,41 @@ } } + //----------------------------------------------------------------------- + public void testSeparatorsToUnix() { + assertEquals(null, FilenameUtils.separatorsToUnix(null)); + assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("/a/b/c")); + assertEquals("/a/b/c.txt", FilenameUtils.separatorsToUnix("/a/b/c.txt")); + assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("/a/b\\c")); + assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("\\a\\b\\c")); + assertEquals("D:/a/b/c", FilenameUtils.separatorsToUnix("D:\\a\\b\\c")); + } + + public void testSeparatorsToWindows() { + assertEquals(null, FilenameUtils.separatorsToWindows(null)); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("\\a\\b\\c")); + assertEquals("\\a\\b\\c.txt", FilenameUtils.separatorsToWindows("\\a\\b\\c.txt")); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("\\a\\b/c")); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("/a/b/c")); + assertEquals("D:\\a\\b\\c", FilenameUtils.separatorsToWindows("D:/a/b/c")); + } + + public void testSeparatorsToSystem() { + if (File.separatorChar == '/') { + assertEquals(null, FilenameUtils.separatorsToSystem(null)); + assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("/a/b/c")); + assertEquals("/a/b/c.txt", FilenameUtils.separatorsToSystem("/a/b/c.txt")); + assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("/a/b\\c")); + assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("\\a\\b\\c")); + assertEquals("D:/a/b/c", FilenameUtils.separatorsToSystem("D:\\a\\b\\c")); + } else { + assertEquals(null, FilenameUtils.separatorsToSystem(null)); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("\\a\\b\\c")); + assertEquals("\\a\\b\\c.txt", FilenameUtils.separatorsToSystem("\\a\\b\\c.txt")); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("\\a\\b/c")); + assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("/a/b/c")); + assertEquals("D:\\a\\b\\c", FilenameUtils.separatorsToSystem("D:/a/b/c")); + } + } + } 1.19 +65 -1 jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java Index: FilenameUtils.java =================================================================== RCS file: /home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- FilenameUtils.java 29 Oct 2004 21:38:49 -0000 1.18 +++ FilenameUtils.java 30 Oct 2004 22:16:23 -0000 1.19 @@ -55,6 +55,7 @@ * @author Matthew Hawthorne * @author Martin Cooper * @author <a href="mailto:[EMAIL PROTECTED]">Jeremias Maerki</a> + * @author Stephen Colebourne * @version $Id$ * @since Commons IO 1.1 */ @@ -66,6 +67,21 @@ private static final char INTERNAL_SEPARATOR_CHAR = '/'; /** + * The Unix separator character. + */ + private static final char UNIX_SEPARATOR = '/'; + + /** + * The Windows separator character. + */ + private static final char WINDOWS_SEPARATOR = '\\'; + + /** + * The system separator character. + */ + private static final char SYSTEM_SEPARATOR = File.separatorChar; + + /** * Standard separator string used when internalizing paths. */ // KILL? It's here to match symmetry of File.separator and to promote its use @@ -472,6 +488,54 @@ if (INTERNAL_SEPARATOR_CHAR != File.separatorChar) { path = path.replace(INTERNAL_SEPARATOR_CHAR, File.separatorChar); } + return path; + } + + //----------------------------------------------------------------------- + /** + * Convert all separators to the Unix separator of forward slash. + * + * @param path the path to be changed, null ignored + * @return the updated path + */ + public static String separatorsToUnix(String path) { + if (path == null || path.indexOf(WINDOWS_SEPARATOR) == -1) { + return path; + } + return path.replace(WINDOWS_SEPARATOR, UNIX_SEPARATOR); + } + + /** + * Convert all separators to the Windows separator of backslash. + * + * @param path the path to be changed, null ignored + * @return the updated path + */ + public static String separatorsToWindows(String path) { + if (path == null || path.indexOf(UNIX_SEPARATOR) == -1) { + return path; + } + return path.replace(UNIX_SEPARATOR, WINDOWS_SEPARATOR); + } + + /** + * Convert all separators to the system separator. + * + * @param path the path to be changed, null ignored + * @return the updated path + */ + public static String separatorsToSystem(String path) { + if (path == null) { + return null; + } + if (SYSTEM_SEPARATOR == UNIX_SEPARATOR) { + return separatorsToUnix(path); + } + if (SYSTEM_SEPARATOR == WINDOWS_SEPARATOR) { + return separatorsToWindows(path); + } + path = path.replace(UNIX_SEPARATOR, SYSTEM_SEPARATOR); + path = path.replace(WINDOWS_SEPARATOR, SYSTEM_SEPARATOR); return path; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]