io.sirix.utils.SirixFiles Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sirix-core Show documentation
Show all versions of sirix-core Show documentation
SirixDB is a hybrid on-disk and in-memory document oriented, versioned database system. It has a lightweight buffer manager, stores everything in a huge persistent and durable tree and allows efficient reconstruction of every revision. Furthermore, SirixDB implements change tracking, diffing and supports time travel queries.
package io.sirix.utils;
import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator;
import java.util.stream.Stream;
/**
* Static methods for file operations.
*
* @author Johannes Lichtenberger, University of Konstanz
*/
public final class SirixFiles {
/**
* Utility methods.
*/
private SirixFiles() {
throw new AssertionError("May not be instantiated!");
}
/**
* Recursively remove a directory.
*
* @param path {@link Path} to the directory
* @throws UncheckedIOException if any I/O operation fails
* @throws NullPointerException if any of the arguments are {@code null}
*/
public static void recursiveRemove(final Path path) {
if (Files.exists(path)) {
try (var stream = Files.walk(path)) {
stream.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
} catch (final IOException e) {
throw new UncheckedIOException(e);
}
}
}
public static boolean isDirectoryEmpty(Path path) {
if (Files.isDirectory(path)) {
try (final Stream entries = Files.list(path)) {
return entries.findFirst().isEmpty();
} catch (final IOException e) {
throw new UncheckedIOException(e);
}
}
return false;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy