Merge pull request #9780 from majajoksovic/master

BAEL-4395
This commit is contained in:
Eric Martin 2020-08-06 19:47:13 -05:00 committed by GitHub
commit 0eb980a047
6 changed files with 256 additions and 0 deletions

View File

@ -0,0 +1,15 @@
package com.baeldung.copydirectory;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class ApacheCommons {
public static void copyDirectory(String sourceDirectoryLocation, String destinationDirectoryLocation) throws IOException {
File sourceDirectory = new File(sourceDirectoryLocation);
File destinationDirectory = new File(destinationDirectoryLocation);
FileUtils.copyDirectory(sourceDirectory, destinationDirectory);
}
}

View File

@ -0,0 +1,38 @@
package com.baeldung.copydirectory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CoreOld {
public static void copyDirectoryJavaUnder7(File source, File destination) throws IOException {
if (source.isDirectory()) {
copyDirectory(source, destination);
} else {
copyFile(source, destination);
}
}
private static void copyDirectory(File sourceDirectory, File destinationDirectory) throws IOException {
if (!destinationDirectory.exists()) {
destinationDirectory.mkdir();
}
for (String f : sourceDirectory.list()) {
copyDirectoryJavaUnder7(new File(sourceDirectory, f), new File(destinationDirectory, f));
}
}
private static void copyFile(File sourceFile, File destinationFile) throws IOException {
try (InputStream in = new FileInputStream(sourceFile); OutputStream out = new FileOutputStream(destinationFile)) {
byte[] buf = new byte[1024];
int length;
while ((length = in.read(buf)) > 0) {
out.write(buf, 0, length);
}
}
}
}

View File

@ -0,0 +1,22 @@
package com.baeldung.copydirectory;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class JavaNio {
public static void copyDirectory(String sourceDirectoryLocation, String destinationDirectoryLocation) throws IOException {
Files.walk(Paths.get(sourceDirectoryLocation))
.forEach(source -> {
Path destination = Paths.get(destinationDirectoryLocation, source.toString()
.substring(sourceDirectoryLocation.length()));
try {
Files.copy(source, destination);
} catch (IOException e) {
e.printStackTrace();
}
});
}
}

View File

@ -0,0 +1,59 @@
package com.baeldung.copydirectory;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class ApacheCommonsUnitTest {
private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
private final String subDirectoryName = "/childDirectory";
private final String fileName = "/file.txt";
private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
@BeforeEach
public void createDirectoryWithSubdirectoryAndFile() throws IOException {
Files.createDirectories(Paths.get(sourceDirectoryLocation));
Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName));
Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName));
}
@Test
public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException {
ApacheCommons.copyDirectory(sourceDirectoryLocation, destinationDirectoryLocation);
assertTrue(new File(destinationDirectoryLocation).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists());
}
@Test
public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() {
assertThrows(Exception.class, () -> ApacheCommons.copyDirectory("nonExistingDirectory", destinationDirectoryLocation));
}
@AfterEach
public void cleanUp() throws IOException {
Files.walk(Paths.get(sourceDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
if (new File(destinationDirectoryLocation).exists()) {
Files.walk(Paths.get(destinationDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
}
}
}

View File

@ -0,0 +1,63 @@
package com.baeldung.copydirectory;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class CoreOldUnitTest {
private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
private final String subDirectoryName = "/childDirectory";
private final String fileName = "/file.txt";
private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
@BeforeEach
public void createDirectoryWithSubdirectoryAndFile() throws IOException {
Files.createDirectories(Paths.get(sourceDirectoryLocation));
Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName));
Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName));
}
@Test
public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException {
File sourceDirectory = new File(sourceDirectoryLocation);
File destinationDirectory = new File(destinationDirectoryLocation);
CoreOld.copyDirectoryJavaUnder7(sourceDirectory, destinationDirectory);
assertTrue(new File(destinationDirectoryLocation).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists());
}
@Test
public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() throws IOException {
File sourceDirectory = new File("nonExistingDirectory");
File destinationDirectory = new File(destinationDirectoryLocation);
assertThrows(IOException.class, () -> CoreOld.copyDirectoryJavaUnder7(sourceDirectory, destinationDirectory));
}
@AfterEach
public void cleanUp() throws IOException {
Files.walk(Paths.get(sourceDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
if (new File(destinationDirectoryLocation).exists()) {
Files.walk(Paths.get(destinationDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
}
}
}

View File

@ -0,0 +1,59 @@
package com.baeldung.copydirectory;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class JavaNioUnitTest {
private final String sourceDirectoryLocation = "src/test/resources/sourceDirectory";
private final String subDirectoryName = "/childDirectory";
private final String fileName = "/file.txt";
private final String destinationDirectoryLocation = "src/test/resources/destinationDirectory";
@BeforeEach
public void createDirectoryWithSubdirectoryAndFile() throws IOException {
Files.createDirectories(Paths.get(sourceDirectoryLocation));
Files.createDirectories(Paths.get(sourceDirectoryLocation + subDirectoryName));
Files.createFile(Paths.get(sourceDirectoryLocation + subDirectoryName + fileName));
}
@Test
public void whenSourceDirectoryExists_thenDirectoryIsFullyCopied() throws IOException {
JavaNio.copyDirectory(sourceDirectoryLocation, destinationDirectoryLocation);
assertTrue(new File(destinationDirectoryLocation).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName).exists());
assertTrue(new File(destinationDirectoryLocation + subDirectoryName + fileName).exists());
}
@Test
public void whenSourceDirectoryDoesNotExist_thenExceptionIsThrown() {
assertThrows(IOException.class, () -> JavaNio.copyDirectory("nonExistingDirectory", destinationDirectoryLocation));
}
@AfterEach
public void cleanUp() throws IOException {
Files.walk(Paths.get(sourceDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
if (new File(destinationDirectoryLocation).exists()) {
Files.walk(Paths.get(destinationDirectoryLocation))
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
}
}
}