📄 fileutilstestcase.java
字号:
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import org.apache.commons.io.filefilter.NameFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.apache.commons.io.testtools.FileBasedTestCase;
/**
* This is used to test FileUtils for correctness.
*
* @author Peter Donald
* @author Matthew Hawthorne
* @author Stephen Colebourne
* @author Jim Harrington
* @version $Id: FileUtilsTestCase.java 610810 2008-01-10 15:04:49Z niallp $
* @see FileUtils
*/
public class FileUtilsTestCase extends FileBasedTestCase {
// Test data
/**
* Size of test directory.
*/
private static final int TEST_DIRECTORY_SIZE = 0;
/**
* List files recursively
*/
private static final ListDirectoryWalker LIST_WALKER = new ListDirectoryWalker();
/** Delay in milliseconds to make sure test for "last modified date" are accurate */
//private static final int LAST_MODIFIED_DELAY = 600;
private File testFile1;
private File testFile2;
private static int testFile1Size;
private static int testFile2Size;
public static void main(String[] args) {
TestRunner.run(suite());
}
public static Test suite() {
return new TestSuite(FileUtilsTestCase.class);
}
public FileUtilsTestCase(String name) throws IOException {
super(name);
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(testFile1, testFile1Size);
createFile(testFile2, testFile2Size);
FileUtils.deleteDirectory(getTestDirectory());
getTestDirectory().mkdirs();
createFile(testFile1, testFile1Size);
createFile(testFile2, testFile2Size);
}
/** @see junit.framework.TestCase#tearDown() */
protected void tearDown() throws Exception {
FileUtils.deleteDirectory(getTestDirectory());
}
//-----------------------------------------------------------------------
public void test_openInputStream_exists() throws Exception {
File file = new File(getTestDirectory(), "test.txt");
createLineBasedFile(file, new String[] {"Hello"});
FileInputStream in = null;
try {
in = FileUtils.openInputStream(file);
assertEquals('H', in.read());
} finally {
IOUtils.closeQuietly(in);
}
}
public void test_openInputStream_existsButIsDirectory() throws Exception {
File directory = new File(getTestDirectory(), "subdir");
directory.mkdirs();
FileInputStream in = null;
try {
in = FileUtils.openInputStream(directory);
fail();
} catch (IOException ioe) {
// expected
} finally {
IOUtils.closeQuietly(in);
}
}
public void test_openInputStream_notExists() throws Exception {
File directory = new File(getTestDirectory(), "test.txt");
FileInputStream in = null;
try {
in = FileUtils.openInputStream(directory);
fail();
} catch (IOException ioe) {
// expected
} finally {
IOUtils.closeQuietly(in);
}
}
//-----------------------------------------------------------------------
void openOutputStream_noParent(boolean createFile) throws Exception {
File file = new File("test.txt");
assertNull(file.getParentFile());
try {
if (createFile) {
createLineBasedFile(file, new String[]{"Hello"});}
FileOutputStream out = null;
try {
out = FileUtils.openOutputStream(file);
out.write(0);
} finally {
IOUtils.closeQuietly(out);
}
assertEquals(true, file.exists());
} finally {
if (file.delete() == false) {
file.deleteOnExit();
}
}
}
public void test_openOutputStream_noParentCreateFile() throws Exception {
openOutputStream_noParent(true);
}
public void test_openOutputStream_noParentNoFile() throws Exception {
openOutputStream_noParent(false);
}
public void test_openOutputStream_exists() throws Exception {
File file = new File(getTestDirectory(), "test.txt");
createLineBasedFile(file, new String[] {"Hello"});
FileOutputStream out = null;
try {
out = FileUtils.openOutputStream(file);
out.write(0);
} finally {
IOUtils.closeQuietly(out);
}
assertEquals(true, file.exists());
}
public void test_openOutputStream_existsButIsDirectory() throws Exception {
File directory = new File(getTestDirectory(), "subdir");
directory.mkdirs();
FileOutputStream out = null;
try {
out = FileUtils.openOutputStream(directory);
fail();
} catch (IOException ioe) {
// expected
} finally {
IOUtils.closeQuietly(out);
}
}
public void test_openOutputStream_notExists() throws Exception {
File file = new File(getTestDirectory(), "a/test.txt");
FileOutputStream out = null;
try {
out = FileUtils.openOutputStream(file);
out.write(0);
} finally {
IOUtils.closeQuietly(out);
}
assertEquals(true, file.exists());
}
public void test_openOutputStream_notExistsCannotCreate() throws Exception {
// according to Wikipedia, most filing systems have a 256 limit on filename
String longStr =
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz" +
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz" +
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz" +
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz" +
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz" +
"abcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyzabcdevwxyz"; // 300 chars
File file = new File(getTestDirectory(), "a/" + longStr + "/test.txt");
FileOutputStream out = null;
try {
out = FileUtils.openOutputStream(file);
fail();
} catch (IOException ioe) {
// expected
} finally {
IOUtils.closeQuietly(out);
}
}
//-----------------------------------------------------------------------
// 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");
}
//-----------------------------------------------------------------------
public void testToFile1() throws Exception {
URL url = new URL("file", null, "a/b/c/file.txt");
File file = FileUtils.toFile(url);
assertEquals(true, file.toString().indexOf("file.txt") >= 0);
}
public void testToFile2() throws Exception {
URL url = new URL("file", null, "a/b/c/file%20n%61me.tx%74");
File file = FileUtils.toFile(url);
assertEquals(true, file.toString().indexOf("file name.txt") >= 0);
}
public void testToFile3() throws Exception {
assertEquals(null, FileUtils.toFile((URL) null));
assertEquals(null, FileUtils.toFile(new URL("http://jakarta.apache.org")));
}
public void testToFile4() throws Exception {
URL url = new URL("file", null, "a/b/c/file%2Xn%61me.txt");
try {
FileUtils.toFile(url);
fail();
} catch (IllegalArgumentException ex) {}
}
// toFiles
public void testToFiles1() throws Exception {
URL[] urls = new URL[] {
new URL("file", null, "file1.txt"),
new URL("file", null, "file2.txt"),
};
File[] files = FileUtils.toFiles(urls);
assertEquals(urls.length, files.length);
assertEquals("File: " + files[0], true, files[0].toString().indexOf("file1.txt") >= 0);
assertEquals("File: " + files[1], true, files[1].toString().indexOf("file2.txt") >= 0);
}
public void testToFiles2() throws Exception {
URL[] urls = new URL[] {
new URL("file", null, "file1.txt"),
null,
};
File[] files = FileUtils.toFiles(urls);
assertEquals(urls.length, files.length);
assertEquals("File: " + files[0], true, files[0].toString().indexOf("file1.txt") >= 0);
assertEquals("File: " + files[1], null, files[1]);
}
public void testToFiles3() throws Exception {
URL[] urls = null;
File[] files = FileUtils.toFiles(urls);
assertEquals(0, files.length);
}
public void testToFiles4() throws Exception {
URL[] urls = new URL[] {
new URL("file", null, "file1.txt"),
new URL("http", "jakarta.apache.org", "file1.txt"),
};
try {
FileUtils.toFiles(urls);
fail();
} catch (IllegalArgumentException ex) {}
}
// toURLs
public void testToURLs1() throws Exception {
File[] files = new File[] {
new File(getTestDirectory(), "file1.txt"),
new File(getTestDirectory(), "file2.txt"),
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -