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); } } }