FEAT FileUtils deleteDirectoryRecursively
parent
7e8ddb9aa8
commit
dc04c578c9
|
@ -0,0 +1,34 @@
|
|||
package de.nclazz.commons.io;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public abstract class FileUtils {
|
||||
|
||||
private FileUtils() { /* no-op */ }
|
||||
|
||||
/**
|
||||
* Deletes a directory recursively.
|
||||
* @param dir Directory to delete
|
||||
* @throws NullPointerException if {@code dir} is {@code null}
|
||||
* @throws IllegalArgumentException if {@code dir} is not a directory
|
||||
*/
|
||||
public static void deleteDirectoryRecursively(@NonNull File dir) {
|
||||
if(!dir.exists()) return;
|
||||
if(!dir.isDirectory()) {
|
||||
throw new IllegalArgumentException(String.format("File '%s' is not a directory!", dir.getAbsolutePath()));
|
||||
}
|
||||
|
||||
for(File file : dir.listFiles()) {
|
||||
if(file.isDirectory()) {
|
||||
deleteDirectoryRecursively(file);
|
||||
}else {
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
|
||||
dir.delete();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package de.nclazz.commons.io;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class FileUtilsTests {
|
||||
|
||||
@Test
|
||||
void testDeleteDirectoryRecursively() throws IOException {
|
||||
|
||||
File readmeFile = new File("README.md");
|
||||
File dir = createDirectory();
|
||||
|
||||
assertTrue(dir.exists());
|
||||
assertTrue(dir.isDirectory());
|
||||
|
||||
assertThrows(NullPointerException.class, () -> FileUtils.deleteDirectoryRecursively(null));
|
||||
assertThrows(IllegalArgumentException.class, () -> FileUtils.deleteDirectoryRecursively(readmeFile));
|
||||
assertDoesNotThrow(() -> FileUtils.deleteDirectoryRecursively(dir));
|
||||
|
||||
assertTrue(!dir.exists());
|
||||
}
|
||||
|
||||
File createDirectory() throws IOException {
|
||||
File dir = new File("target/tmp/subdirs/secondlevel");
|
||||
dir.mkdirs();
|
||||
|
||||
for(int i = 0; i < 64; i++) {
|
||||
new File(dir, "test_"+i+".txt").createNewFile();
|
||||
}
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue