matth 2003/10/17 13:15:46
Modified: io/src/java/org/apache/commons/io FileUtils.java
io/src/test/org/apache/commons/io FileUtilsTestCase.java
Added: io/src/java/org/apache/commons/io/input package.html
io/src/java/org/apache/commons/io/output package.html
Log:
Bugzilla #22738 from yours truly.
Revision Changes Path
1.16 +24 -22
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/FileUtils.java
Index: FileUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/io/src/java/org/apache/commons/io/FileUtils.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- FileUtils.java 13 Oct 2003 07:04:52 -0000 1.15
+++ FileUtils.java 17 Oct 2003 20:15:46 -0000 1.16
@@ -57,11 +57,12 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
-import java.util.Vector;
/**
* This class provides basic facilities for manipulating files and file paths.
@@ -241,16 +242,6 @@
}
/**
- * Creates a file handle.
- *
- * @param fileName The name of the file.
- * @return A <code>File</code> instance.
- */
- public static File getFile(String fileName) {
- return new File(fileName);
- }
-
- /**
* Given a directory and an array of extensions... return an array of
* compliant files.
*
@@ -264,9 +255,9 @@
String directory,
String[] extensions) {
- Vector files = new Vector();
+ Collection files = new ArrayList();
- java.io.File currentDir = new java.io.File(directory);
+ File currentDir = new File(directory);
String[] unknownFiles = currentDir.list();
@@ -279,7 +270,7 @@
directory
+ System.getProperty("file.separator")
+ unknownFiles[i];
- java.io.File currentFile = new java.io.File(currentFileName);
+ File currentFile = new java.io.File(currentFileName);
if (currentFile.isDirectory()) {
@@ -293,14 +284,14 @@
String[] fetchFiles =
getFilesFromExtension(currentFileName, extensions);
- files = blendFilesToVector(files, fetchFiles);
+ files = blendFiles(files, fetchFiles);
} else {
//ok... add the file
String add = currentFile.getAbsolutePath();
if (isValidFile(add, extensions)) {
- files.addElement(add);
+ files.add(add);
}
@@ -310,7 +301,7 @@
//ok... move the Vector into the files list...
String[] foundFiles = new String[files.size()];
- files.copyInto(foundFiles);
+ files.toArray(foundFiles);
return foundFiles;
@@ -319,13 +310,13 @@
/**
* Private hepler method for getFilesFromExtension()
*/
- private static Vector blendFilesToVector(Vector v, String[] files) {
+ private static Collection blendFiles(Collection c, String[] files) {
for (int i = 0; i < files.length; ++i) {
- v.addElement(files[i]);
+ c.add(files[i]);
}
- return v;
+ return c;
}
/**
@@ -1270,6 +1261,17 @@
throws Exception {
String content = fileRead(inFileName);
fileWrite(outFileName, content);
+ }
+
+ /**
+ * Creates a file handle.
+ *
+ * @param fileName The name of the file.
+ * @return A <code>File</code> instance.
+ * @deprecated Use [EMAIL PROTECTED] java.io.File#Constructor(String)}
+ */
+ public static File getFile(String fileName) {
+ return new File(fileName);
}
}
1.1
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/input/package.html
Index: package.html
===================================================================
Implementations of input classes, such as |InputStream| and |Reader|.
1.1
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/output/package.html
Index: package.html
===================================================================
Implementations of output classes, such as |OutputStream| and |Writer|.
1.4 +317 -62
jakarta-commons-sandbox/io/src/test/org/apache/commons/io/FileUtilsTestCase.java
Index: FileUtilsTestCase.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/io/src/test/org/apache/commons/io/FileUtilsTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FileUtilsTestCase.java 13 Oct 2003 07:06:04 -0000 1.3
+++ FileUtilsTestCase.java 17 Oct 2003 20:15:46 -0000 1.4
@@ -60,10 +60,11 @@
package org.apache.commons.io;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
-import org.apache.commons.io.testtools.*;
+import org.apache.commons.io.testtools.FileBasedTestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -72,16 +73,25 @@
/**
* This is used to test FileUtils for correctness.
*
- * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
+ * @author Peter Donald
+ * @author Matthew Hawthorne
+ * @version $Id$
+ * @see FileUtils
*/
public final class FileUtilsTestCase extends FileBasedTestCase {
// Test data
- private static final int FILE1_SIZE = 1;
- private static final int FILE2_SIZE = 1024 * 4 + 1;
- private final File m_testFile1;
- private final File m_testFile2;
+ /**
+ * Size of test directory.
+ */
+ private static final int TEST_DIRECTORY_SIZE = 0;
+
+ private final File testFile1;
+ private final File testFile2;
+
+ private static int testFile1Size;
+ private static int testFile2Size;
public static void main(String[] args) {
TestRunner.run(suite());
@@ -94,19 +104,22 @@
public FileUtilsTestCase(final String name) throws IOException {
super(name);
- m_testFile1 = new File(getTestDirectory(), "file1-test.txt");
- m_testFile2 = new File(getTestDirectory(), "file1a-test.txt");
+ testFile1 = new File(getTestDirectory(), "file1-test.txt");
+ testFile2 = new File(getTestDirectory(), "file1a-test.txt");
+
+ testFile1Size = (int)testFile1.length();
+ testFile2Size = (int)testFile2.length();
}
/** @see junit.framework.TestCase#setUp() */
protected void setUp() throws Exception {
getTestDirectory().mkdirs();
- createFile(m_testFile1, FILE1_SIZE);
- createFile(m_testFile2, FILE2_SIZE);
+ createFile(testFile1, testFile1Size);
+ createFile(testFile2, testFile2Size);
FileUtils.deleteDirectory(getTestDirectory());
getTestDirectory().mkdirs();
- createFile(m_testFile1, FILE1_SIZE);
- createFile(m_testFile2, FILE2_SIZE);
+ createFile(testFile1, testFile1Size);
+ createFile(testFile2, testFile2Size);
}
/** @see junit.framework.TestCase#tearDown() */
@@ -114,20 +127,242 @@
FileUtils.deleteDirectory(getTestDirectory());
}
+ // byteCountToDisplaySize
+
+ public void testByteCountToDisplaySize() {
+ assertEquals(FileUtils.byteCountToDisplaySize(0), "0 bytes");
+ assertEquals(FileUtils.byteCountToDisplaySize(1024), "1 KB");
+ assertEquals(FileUtils.byteCountToDisplaySize(1024 * 1024), "1 MB");
+ assertEquals(
+ FileUtils.byteCountToDisplaySize(1024 * 1024 * 1024),
+ "1 GB");
+ }
+
+ // waitFor
+
+ public void testWaitFor() {
+ FileUtils.waitFor("", -1);
+
+ FileUtils.waitFor("", 2);
+ }
+
+ // toURL
+
+ public void testToURLs() throws Exception {
+ final File[] files = new File[] { new File("file1"), new File("file2")};
+
+ final URL[] urls = FileUtils.toURLs(files);
+
+ // Path separator causes equality tests to fail
+ //assertEquals(urls[0].getFile(), File.separator +
files[0].getAbsolutePath());
+ //assertEquals(urls[1].getFile(), File.separator +
files[1].getAbsolutePath());
+
+ }
+
+ public void testGetFilesFromExtension() {
+ // TODO I'm not sure what is supposed to happen here
+ FileUtils.getFilesFromExtension("dir", null);
+
+ // Non-existent files
+ final String[] emptyFileNames =
+ FileUtils.getFilesFromExtension(
+ getTestDirectory().getAbsolutePath(),
+ new String[] { "java" });
+ assertTrue(emptyFileNames.length == 0);
+
+ // Existing files
+ // TODO Figure out how to test this
+ /*
+ final String[] fileNames =
+ FileUtils.getFilesFromExtension(
+ getClass().getResource("/java/util/").getFile(),
+ new String[] { "class" });
+ assertTrue(fileNames.length > 0);
+ */
+ }
+
+ // mkdir
+
+ public void testMkdir() {
+ final File dir = new File(getTestDirectory(), "testdir");
+ FileUtils.mkdir(dir.getAbsolutePath());
+ dir.deleteOnExit();
+ }
+
+ // contentEquals
+
+ public void testContentEquals() throws Exception {
+ // Non-existent files
+ final File file = new File(getTestDirectory(), getName());
+ assertTrue(FileUtils.contentEquals(file, file));
+
+ // TODO Should comparing 2 directories throw an Exception instead of
returning false?
+ // Directories
+ assertTrue(
+ !FileUtils.contentEquals(getTestDirectory(), getTestDirectory()));
+
+ // Different files
+ final File objFile1 =
+ new File(getTestDirectory(), getName() + ".object");
+ objFile1.deleteOnExit();
+ FileUtils.copyURLToFile(
+ getClass().getResource("/java/lang/Object.class"),
+ objFile1);
+
+ final File objFile2 =
+ new File(getTestDirectory(), getName() + ".collection");
+ objFile2.deleteOnExit();
+ FileUtils.copyURLToFile(
+ getClass().getResource("/java/util/Collection.class"),
+ objFile2);
+
+ assertTrue(
+ "Files should not be equal.",
+ !FileUtils.contentEquals(objFile1, objFile2));
+
+ // Equal files
+ file.createNewFile();
+ assertTrue(FileUtils.contentEquals(file, file));
+ }
+
+ // removePath
+
+ public void testRemovePath() {
+ final String fileName =
+ FileUtils.removePath(
+ new File(getTestDirectory(), getName()).getAbsolutePath());
+ assertEquals(getName(), fileName);
+ }
+
+ // getPath
+
+ public void testGetPath() {
+ final String fileName =
+ FileUtils.getPath(
+ new File(getTestDirectory(), getName()).getAbsolutePath());
+ assertEquals(getTestDirectory().getAbsolutePath(), fileName);
+ }
+
+ // copyURLToFile
+
+ public void testCopyURLToFile() throws Exception {
+ // Creates file
+ final File file = new File(getTestDirectory(), getName());
+ file.deleteOnExit();
+
+ // Loads resource
+ final String resourceName = "/java/lang/Object.class";
+ FileUtils.copyURLToFile(getClass().getResource(resourceName), file);
+
+ // Tests that resuorce was copied correctly
+ final FileInputStream fis = new FileInputStream(file);
+ try {
+ assertTrue(
+ "Content is not equal.",
+ IOUtils.contentEquals(
+ getClass().getResourceAsStream(resourceName),
+ fis));
+ } finally {
+ fis.close();
+ }
+ }
+
+ // catPath
+
+ public void testCatPath() {
+ // TODO StringIndexOutOfBoundsException thrown if file doesn't contain
slash.
+ // Is this acceptable?
+ //assertEquals("", FileUtils.catPath("a", "b"));
+
+ assertEquals("/a/c", FileUtils.catPath("/a/b", "c"));
+ assertEquals("/a/d", FileUtils.catPath("/a/b/c", "../d"));
+ }
+
+ // forceMkdir
+
+ public void testForceMkdir() throws Exception {
+ // Tests with existing directory
+ FileUtils.forceMkdir(getTestDirectory());
+
+ // Creates test file
+ final File testFile = new File(getTestDirectory(), getName());
+ testFile.deleteOnExit();
+ testFile.createNewFile();
+ assertTrue("Test file does not exist.", testFile.exists());
+
+ // Tests with existing file
+ try {
+ FileUtils.forceMkdir(testFile);
+ fail("Exception expected.");
+ } catch (IOException ex) {}
+
+ testFile.delete();
+
+ // Tests with non-existent directory
+ FileUtils.forceMkdir(testFile);
+ assertTrue("Directory was not created.", testFile.exists());
+ }
+
+ // sizeOfDirectory
+
+ public void testSizeOfDirectory() throws Exception {
+ final File file = new File(getTestDirectory(), getName());
+
+ // Non-existent file
+ try {
+ FileUtils.sizeOfDirectory(file);
+ fail("Exception expected.");
+ } catch (IllegalArgumentException ex) {}
+
+ // Creates file
+ file.createNewFile();
+ file.deleteOnExit();
+
+ // Existing file
+ try {
+ FileUtils.sizeOfDirectory(file);
+ fail("Exception expected.");
+ } catch (IllegalArgumentException ex) {}
+
+ // Existing directory
+ file.delete();
+ file.mkdir();
+
+ assertEquals(
+ "Unexpected directory size",
+ TEST_DIRECTORY_SIZE,
+ FileUtils.sizeOfDirectory(file));
+ }
+
+ // isFileNewer
+
+ // TODO Finish test
+ public void XtestIsFileNewer() {}
+
+ // TODO Remove after debugging
+ private final void log(Object obj) {
+ System.out.println(
+ FileUtilsTestCase.class +" " + getName() + " " + obj);
+ }
+
+ // copyFile
+
public void testCopyFile1() throws Exception {
final File destination = new File(getTestDirectory(), "copy1.txt");
- FileUtils.copyFile(m_testFile1, destination);
+ FileUtils.copyFile(testFile1, destination);
assertTrue("Check Exist", destination.exists());
- assertTrue("Check Full copy", destination.length() == FILE1_SIZE);
+ assertTrue("Check Full copy", destination.length() == testFile1Size);
}
public void testCopyFile2() throws Exception {
final File destination = new File(getTestDirectory(), "copy2.txt");
- FileUtils.copyFile(m_testFile2, destination);
+ FileUtils.copyFile(testFile1, destination);
assertTrue("Check Exist", destination.exists());
- assertTrue("Check Full copy", destination.length() == FILE2_SIZE);
+ assertTrue("Check Full copy", destination.length() == testFile2Size);
}
+ // forceDelete
+
public void testForceDeleteAFile1() throws Exception {
final File destination = new File(getTestDirectory(), "copy1.txt");
destination.createNewFile();
@@ -144,31 +379,39 @@
assertTrue("Check No Exist", !destination.exists());
}
+ // copyFileToDirectory
+
public void testCopyFile1ToDir() throws Exception {
final File directory = new File(getTestDirectory(), "subdir");
if (!directory.exists())
directory.mkdirs();
- final File destination = new File(directory, m_testFile1.getName());
- FileUtils.copyFileToDirectory(m_testFile1, directory);
+ final File destination = new File(directory, testFile1.getName());
+ FileUtils.copyFileToDirectory(testFile1, directory);
assertTrue("Check Exist", destination.exists());
- assertTrue("Check Full copy", destination.length() == FILE1_SIZE);
+ assertTrue("Check Full copy", destination.length() == testFile1Size);
}
public void testCopyFile2ToDir() throws Exception {
final File directory = new File(getTestDirectory(), "subdir");
if (!directory.exists())
directory.mkdirs();
- final File destination = new File(directory, m_testFile2.getName());
- FileUtils.copyFileToDirectory(m_testFile2, directory);
+ final File destination = new File(directory, testFile1.getName());
+ FileUtils.copyFileToDirectory(testFile1, directory);
assertTrue("Check Exist", destination.exists());
- assertTrue("Check Full copy", destination.length() == FILE2_SIZE);
+ assertTrue("Check Full copy", destination.length() == testFile2Size);
}
+ // forceDelete
+
public void testForceDeleteDir() throws Exception {
FileUtils.forceDelete(getTestDirectory().getParentFile());
- assertTrue("Check No Exist", !getTestDirectory().getParentFile().exists());
+ assertTrue(
+ "Check No Exist",
+ !getTestDirectory().getParentFile().exists());
}
+ // resolveFile
+
public void testResolveFileDotDot() throws Exception {
final File file = FileUtils.resolveFile(getTestDirectory(), "..");
assertEquals(
@@ -182,6 +425,8 @@
assertEquals("Check . operator", file, getTestDirectory());
}
+ // normalize
+
public void testNormalize() throws Exception {
final String[] src =
{
@@ -233,7 +478,10 @@
}
}
- private String replaceAll(String text, String lookFor, String replaceWith) {
+ private String replaceAll(
+ String text,
+ String lookFor,
+ String replaceWith) {
StringBuffer sb = new StringBuffer(text);
while (true) {
int idx = sb.indexOf(lookFor);
@@ -248,7 +496,7 @@
/**
* Test the FileUtils implementation.
*/
- /// Used to exist as IOTestCase class
+ // Used to exist as IOTestCase class
public void testFileUtils() throws Exception {
// Loads file from classpath
final String path = "/test.txt";
@@ -264,7 +512,9 @@
"test.txt extension == \"txt\"",
FileUtils.getExtension(filename).equals("txt"));
- assertTrue("Test file does not exist: " + filename,
FileUtils.fileExists(filename));
+ assertTrue(
+ "Test file does not exist: " + filename,
+ FileUtils.fileExists(filename));
assertTrue(
"Second test file does not exist",
@@ -289,63 +539,68 @@
}
public void testGetExtension() {
- final String[][] tests = {
- {"filename.ext", "ext"},
- {"README", ""},
- {"domain.dot.com", "com"},
- {"image.jpeg", "jpeg"}};
+ final String[][] tests = { { "filename.ext", "ext" }, {
+ "README", "" }, {
+ "domain.dot.com", "com" }, {
+ "image.jpeg", "jpeg" }
+ };
for (int i = 0; i < tests.length; i++) {
assertEquals(tests[i][1], FileUtils.getExtension(tests[i][0]));
//assertEquals(tests[i][1], FileUtils.extension(tests[i][0]));
}
}
-
+
/* TODO: Reenable this test */
public void DISABLED__testGetExtensionWithPaths() {
- final String[][] testsWithPaths = {
- {"/tmp/foo/filename.ext", "ext"},
- {"C:\\temp\\foo\\filename.ext", "ext"},
- {"/tmp/foo.bar/filename.ext", "ext"},
- {"C:\\temp\\foo.bar\\filename.ext", "ext"},
- {"/tmp/foo.bar/README", ""},
- {"C:\\temp\\foo.bar\\README", ""},
- {"../filename.ext", "ext"}};
+ final String[][] testsWithPaths =
+ { { "/tmp/foo/filename.ext", "ext" }, {
+ "C:\\temp\\foo\\filename.ext", "ext" }, {
+ "/tmp/foo.bar/filename.ext", "ext" }, {
+ "C:\\temp\\foo.bar\\filename.ext", "ext" }, {
+ "/tmp/foo.bar/README", "" }, {
+ "C:\\temp\\foo.bar\\README", "" }, {
+ "../filename.ext", "ext" }
+ };
for (int i = 0; i < testsWithPaths.length; i++) {
- assertEquals(testsWithPaths[i][1],
FileUtils.getExtension(testsWithPaths[i][0]));
+ assertEquals(
+ testsWithPaths[i][1],
+ FileUtils.getExtension(testsWithPaths[i][0]));
//assertEquals(testsWithPaths[i][1],
FileUtils.extension(testsWithPaths[i][0]));
}
}
public void testRemoveExtension() {
- final String[][] tests = {
- {"filename.ext", "filename"},
- {"first.second.third.ext", "first.second.third"},
- {"README", "README"},
- {"domain.dot.com", "domain.dot"},
- {"image.jpeg", "image"}};
-
+ final String[][] tests = { { "filename.ext", "filename" }, {
+ "first.second.third.ext", "first.second.third" }, {
+ "README", "README" }, {
+ "domain.dot.com", "domain.dot" }, {
+ "image.jpeg", "image" }
+ };
+
for (int i = 0; i < tests.length; i++) {
assertEquals(tests[i][1], FileUtils.removeExtension(tests[i][0]));
//assertEquals(tests[i][1], FileUtils.basename(tests[i][0]));
}
}
-
+
/* TODO: Reenable this test */
public void DISABLED__testRemoveExtensionWithPaths() {
- final String[][] testsWithPaths = {
- {"/tmp/foo/filename.ext", "filename"},
- {"C:\\temp\\foo\\filename.ext", "filename"},
- {"/tmp/foo.bar/filename.ext", "filename"},
- {"C:\\temp\\foo.bar\\filename.ext", "filename"},
- {"/tmp/foo.bar/README", "README"},
- {"C:\\temp\\foo.bar\\README", "README"},
- {"../filename.ext", "filename"}};
+ final String[][] testsWithPaths =
+ { { "/tmp/foo/filename.ext", "filename" }, {
+ "C:\\temp\\foo\\filename.ext", "filename" }, {
+ "/tmp/foo.bar/filename.ext", "filename" }, {
+ "C:\\temp\\foo.bar\\filename.ext", "filename" }, {
+ "/tmp/foo.bar/README", "README" }, {
+ "C:\\temp\\foo.bar\\README", "README" }, {
+ "../filename.ext", "filename" }
+ };
for (int i = 0; i < testsWithPaths.length; i++) {
- assertEquals(testsWithPaths[i][1],
FileUtils.removeExtension(testsWithPaths[i][0]));
+ assertEquals(
+ testsWithPaths[i][1],
+ FileUtils.removeExtension(testsWithPaths[i][0]));
//assertEquals(testsWithPaths[i][1],
FileUtils.basename(testsWithPaths[i][0]));
}
}
}
-
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]