39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
package io.gitlab.jfronny.modsmod.util;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.MappedByteBuffer;
|
|
import java.nio.channels.FileChannel;
|
|
import java.nio.file.*;
|
|
import java.nio.file.attribute.BasicFileAttributes;
|
|
|
|
public class IOUtil {
|
|
public static void deleteRecursive(Path path) throws IOException {
|
|
Files.walkFileTree(path, new SimpleFileVisitor<>() {
|
|
@Override
|
|
public FileVisitResult visitFile(Path path, BasicFileAttributes basicFileAttributes) throws IOException {
|
|
Files.delete(path);
|
|
return FileVisitResult.CONTINUE;
|
|
}
|
|
@Override
|
|
public FileVisitResult postVisitDirectory(Path path, IOException e) throws IOException {
|
|
Files.delete(path);
|
|
return FileVisitResult.CONTINUE;
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void clearDirectory(Path path) throws IOException {
|
|
deleteRecursive(path);
|
|
Files.createDirectory(path);
|
|
}
|
|
|
|
public static boolean contentEquals(final Path a, final Path b) throws IOException {
|
|
try (final FileChannel fca = FileChannel.open(a, StandardOpenOption.READ);
|
|
final FileChannel fcb = FileChannel.open(b, StandardOpenOption.READ)) {
|
|
final MappedByteBuffer mbba = fca.map(FileChannel.MapMode.READ_ONLY, 0, fca.size());
|
|
final MappedByteBuffer mbbb = fcb.map(FileChannel.MapMode.READ_ONLY, 0, fcb.size());
|
|
return mbba.equals(mbbb);
|
|
}
|
|
}
|
|
}
|