📄 fileutilstestcase.java
字号:
fail("file copy to self should not be possible");
} catch (IOException ioe) {
//we want the exception, copy to self should be illegal
}
}
public void testCopyFile2WithoutFileDatePreservation() throws Exception {
File destination = new File(getTestDirectory(), "copy2.txt");
//Thread.sleep(LAST_MODIFIED_DELAY);
//This is to slow things down so we can catch if
//the lastModified date is not ok
FileUtils.copyFile(testFile1, destination, false);
assertTrue("Check Exist", destination.exists());
assertTrue("Check Full copy", destination.length() == testFile2Size);
/* disabled: Thread.sleep doesn't work reliantly for this case
assertTrue("Check last modified date modified",
testFile1.lastModified() != destination.lastModified());*/
}
public void testCopyDirectoryToDirectory_NonExistingDest() throws Exception {
createFile(testFile1, 1234);
createFile(testFile2, 4321);
File srcDir = getTestDirectory();
File subDir = new File(srcDir, "sub");
subDir.mkdir();
File subFile = new File(subDir, "A.txt");
FileUtils.writeStringToFile(subFile, "HELLO WORLD", "UTF8");
File destDir = new File(System.getProperty("java.io.tmpdir"), "tmp-FileUtilsTestCase");
FileUtils.deleteDirectory(destDir);
File actualDestDir = new File(destDir, srcDir.getName());
FileUtils.copyDirectoryToDirectory(srcDir, destDir);
assertTrue("Check exists", destDir.exists());
assertTrue("Check exists", actualDestDir.exists());
assertEquals("Check size", FileUtils.sizeOfDirectory(srcDir), FileUtils.sizeOfDirectory(actualDestDir));
assertEquals(true, new File(actualDestDir, "sub/A.txt").exists());
FileUtils.deleteDirectory(destDir);
}
public void testCopyDirectoryToNonExistingDest() throws Exception {
createFile(testFile1, 1234);
createFile(testFile2, 4321);
File srcDir = getTestDirectory();
File subDir = new File(srcDir, "sub");
subDir.mkdir();
File subFile = new File(subDir, "A.txt");
FileUtils.writeStringToFile(subFile, "HELLO WORLD", "UTF8");
File destDir = new File(System.getProperty("java.io.tmpdir"), "tmp-FileUtilsTestCase");
FileUtils.deleteDirectory(destDir);
FileUtils.copyDirectory(srcDir, destDir);
assertTrue("Check exists", destDir.exists());
assertEquals("Check size", FileUtils.sizeOfDirectory(srcDir), FileUtils.sizeOfDirectory(destDir));
assertEquals(true, new File(destDir, "sub/A.txt").exists());
FileUtils.deleteDirectory(destDir);
}
public void testCopyDirectoryToExistingDest() throws Exception {
createFile(testFile1, 1234);
createFile(testFile2, 4321);
File srcDir = getTestDirectory();
File subDir = new File(srcDir, "sub");
subDir.mkdir();
File subFile = new File(subDir, "A.txt");
FileUtils.writeStringToFile(subFile, "HELLO WORLD", "UTF8");
File destDir = new File(System.getProperty("java.io.tmpdir"), "tmp-FileUtilsTestCase");
FileUtils.deleteDirectory(destDir);
destDir.mkdirs();
FileUtils.copyDirectory(srcDir, destDir);
assertEquals(FileUtils.sizeOfDirectory(srcDir), FileUtils.sizeOfDirectory(destDir));
assertEquals(true, new File(destDir, "sub/A.txt").exists());
}
public void testCopyDirectoryFiltered() throws Exception {
File grandParentDir = new File(getTestDirectory(), "grandparent");
File parentDir = new File(grandParentDir, "parent");
File childDir = new File(parentDir, "child");
createFilesForTestCopyDirectory(grandParentDir, parentDir, childDir);
NameFileFilter filter = new NameFileFilter(new String[] {"parent", "child", "file3.txt"});
File destDir = new File(getTestDirectory(), "copydest");
FileUtils.copyDirectory(grandParentDir, destDir, filter);
List files = LIST_WALKER.list(destDir);
assertEquals(3, files.size());
assertEquals("parent", ((File)files.get(0)).getName());
assertEquals("child", ((File)files.get(1)).getName());
assertEquals("file3.txt", ((File)files.get(2)).getName());
}
/** Test for IO-141 */
public void testCopyDirectoryToChild() throws Exception {
File grandParentDir = new File(getTestDirectory(), "grandparent");
File parentDir = new File(grandParentDir, "parent");
File childDir = new File(parentDir, "child");
createFilesForTestCopyDirectory(grandParentDir, parentDir, childDir);
long expectedCount = LIST_WALKER.list(grandParentDir).size() +
LIST_WALKER.list(parentDir).size();
long expectedSize = FileUtils.sizeOfDirectory(grandParentDir) +
FileUtils.sizeOfDirectory(parentDir);
FileUtils.copyDirectory(parentDir, childDir);
assertEquals(expectedCount, LIST_WALKER.list(grandParentDir).size());
assertEquals(expectedSize, FileUtils.sizeOfDirectory(grandParentDir));
}
/** Test for IO-141 */
public void testCopyDirectoryToGrandChild() throws Exception {
File grandParentDir = new File(getTestDirectory(), "grandparent");
File parentDir = new File(grandParentDir, "parent");
File childDir = new File(parentDir, "child");
createFilesForTestCopyDirectory(grandParentDir, parentDir, childDir);
long expectedCount = (LIST_WALKER.list(grandParentDir).size() * 2);
long expectedSize = (FileUtils.sizeOfDirectory(grandParentDir) * 2);
FileUtils.copyDirectory(grandParentDir, childDir);
assertEquals(expectedCount, LIST_WALKER.list(grandParentDir).size());
assertEquals(expectedSize, FileUtils.sizeOfDirectory(grandParentDir));
}
private void createFilesForTestCopyDirectory(File grandParentDir, File parentDir, File childDir) throws Exception {
File childDir2 = new File(parentDir, "child2");
File grandChildDir = new File(childDir, "grandChild");
File grandChild2Dir = new File(childDir2, "grandChild2");
File file1 = new File(grandParentDir, "file1.txt");
File file2 = new File(parentDir, "file2.txt");
File file3 = new File(childDir, "file3.txt");
File file4 = new File(childDir2, "file4.txt");
File file5 = new File(grandChildDir, "file5.txt");
File file6 = new File(grandChild2Dir, "file6.txt");
FileUtils.deleteDirectory(grandParentDir);
grandChildDir.mkdirs();
grandChild2Dir.mkdirs();
FileUtils.writeStringToFile(file1, "File 1 in grandparent", "UTF8");
FileUtils.writeStringToFile(file2, "File 2 in parent", "UTF8");
FileUtils.writeStringToFile(file3, "File 3 in child", "UTF8");
FileUtils.writeStringToFile(file4, "File 4 in child2", "UTF8");
FileUtils.writeStringToFile(file5, "File 5 in grandChild", "UTF8");
FileUtils.writeStringToFile(file6, "File 6 in grandChild2", "UTF8");
}
public void testCopyDirectoryErrors() throws Exception {
try {
FileUtils.copyDirectory(null, null);
fail();
} catch (NullPointerException ex) {}
try {
FileUtils.copyDirectory(new File("a"), null);
fail();
} catch (NullPointerException ex) {}
try {
FileUtils.copyDirectory(null, new File("a"));
fail();
} catch (NullPointerException ex) {}
try {
FileUtils.copyDirectory(new File("doesnt-exist"), new File("a"));
fail();
} catch (IOException ex) {}
try {
FileUtils.copyDirectory(testFile1, new File("a"));
fail();
} catch (IOException ex) {}
try {
FileUtils.copyDirectory(getTestDirectory(), testFile1);
fail();
} catch (IOException ex) {}
try {
FileUtils.copyDirectory(getTestDirectory(), getTestDirectory());
fail();
} catch (IOException ex) {}
}
// forceDelete
public void testForceDeleteAFile1() throws Exception {
File destination = new File(getTestDirectory(), "copy1.txt");
destination.createNewFile();
assertTrue("Copy1.txt doesn't exist to delete", destination.exists());
FileUtils.forceDelete(destination);
assertTrue("Check No Exist", !destination.exists());
}
public void testForceDeleteAFile2() throws Exception {
File destination = new File(getTestDirectory(), "copy2.txt");
destination.createNewFile();
assertTrue("Copy2.txt doesn't exist to delete", destination.exists());
FileUtils.forceDelete(destination);
assertTrue("Check No Exist", !destination.exists());
}
public void testForceDeleteAFile3() throws Exception {
File destination = new File(getTestDirectory(), "no_such_file");
assertTrue("Check No Exist", !destination.exists());
try {
FileUtils.forceDelete(destination);
fail("Should generate FileNotFoundException");
} catch (FileNotFoundException ignored){
}
}
// copyFileToDirectory
public void testCopyFile1ToDir() throws Exception {
File directory = new File(getTestDirectory(), "subdir");
if (!directory.exists())
directory.mkdirs();
File destination = new File(directory, testFile1.getName());
//Thread.sleep(LAST_MODIFIED_DELAY);
//This is to slow things down so we can catch if
//the lastModified date is not ok
FileUtils.copyFileToDirectory(testFile1, directory);
assertTrue("Check Exist", destination.exists());
assertTrue("Check Full copy", destination.length() == testFile1Size);
/* disabled: Thread.sleep doesn't work reliantly for this case
assertTrue("Check last modified date preserved",
testFile1.lastModified() == destination.lastModified());*/
try {
FileUtils.copyFileToDirectory(destination, directory);
fail("Should not be able to copy a file into the same directory as itself");
} catch (IOException ioe) {
//we want that, cannot copy to the same directory as the original file
}
}
public void testCopyFile2ToDir() throws Exception {
File directory = new File(getTestDirectory(), "subdir");
if (!directory.exists())
directory.mkdirs();
File destination = new File(directory, testFile1.getName());
//Thread.sleep(LAST_MODIFIED_DELAY);
//This is to slow things down so we can catch if
//the lastModified date is not ok
FileUtils.copyFileToDirectory(testFile1, directory);
assertTrue("Check Exist", destination.exists());
assertTrue("Check Full copy", destination.length() == testFile2Size);
/* disabled: Thread.sleep doesn't work reliantly for this case
assertTrue("Check last modified date preserved",
testFile1.lastModified() == destination.lastModified());*/
}
// forceDelete
public void testForceDeleteDir() throws Exception {
File testDirectory = getTestDirectory();
FileUtils.forceDelete(testDirectory.getParentFile());
assertTrue(
"Check No Exist",
!testDirectory.getParentFile().exists());
}
/**
* Test the FileUtils implementation.
*/
public void testFileUtils() throws Exception {
// Loads file from classpath
File file1 = new File(getTestDirectory(), "test.txt");
String filename = file1.getAbsolutePath();
//Create test file on-the-fly (used to be in CVS)
OutputStream out = new java.io.FileOutputStream(file1);
try {
out.write("This is a test".getBytes("UTF-8"));
} finally {
out.close();
}
File file2 = new File(getTestDirectory(), "test2.txt");
FileUtils.writeStringToFile(file2, filename, "UTF-8");
assertTrue(file2.exists());
assertTrue(file2.length() > 0);
String file2contents = FileUtils.readFileToString(file2, "UTF-8");
assertTrue(
"Second file's contents correct",
filename.equals(file2contents));
assertTrue(file2.delete());
String contents = FileUtils.readFileToString(new File(filename), "UTF-8");
assertTrue("FileUtils.fileRead()", contents.equals("This is a test"));
}
public void testTouch() throws IOException {
File file = new File(getTestDirectory(), "touch.txt") ;
if (file.exists()) {
file.delete();
}
assertTrue("Bad test: test file still exists", !file.exists());
FileUtils.touch(file);
assertTrue("FileUtils.touch() created file", file.exists());
FileOutputStream out = new FileOutputStream(file) ;
assertEquals("Created empty file.", 0, file.length());
out.write(0) ;
out.close();
assertEquals("Wrote one byte to file", 1, file.length());
long y2k = new GregorianCalendar(2000, 0, 1).getTime().getTime();
boolean res = file.setLastModified(y2k); // 0L fails on Win98
assertEquals("Bad test: set lastModified failed", true, res);
assertEquals("Bad test: set lastModified set incorrect value", y2k, file.lastModified());
long now = System.currentTimeMillis();
FileUtils.touch(file) ;
assertEquals("FileUtils.touch() didn't empty the file.", 1, file.length());
assertEquals("FileUtils.touch() changed lastModified", false, y2k == file.lastModified());
assertEquals("FileUtils.touch() changed lastModified to more than now-3s", true, file.lastModified() >= (now - 3000));
assertEquals("FileUtils.touch() changed lastModified to less than now+3s", true, file.lastModified() <= (now + 3000));
}
public void testListFiles() throws Exception {
File srcDir = getTestDirectory();
File subDir = new File(srcDir, "list_test" );
subDir.mkdir();
String[] fileNames = {"a.txt", "b.txt", "c.txt", "d.txt", "e.txt", "f.txt"};
int[] fileSizes = {123, 234, 345, 456, 678, 789};
for (int i = 0; i < fileNames.length; ++i) {
File theFile = new File(subDir, fileNames[i]);
createFile(theFile, fileSizes[i]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -