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]