Utils.java

package it.cnr.iit.ucsdht;


import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;


public class Utils {

    public static boolean createDir(File dir) {
        if (dir.exists()) {
            Utils.deleteDir(dir);
        }
        return dir.mkdir();
    }

    public static boolean deleteDir(File directoryToBeDeleted) {
        File[] allContents = directoryToBeDeleted.listFiles();
        if (allContents != null) {
            for (File file : allContents) {
                deleteDir(file);
            }
        }
        return directoryToBeDeleted.delete();
    }

    public static boolean createDirIfNotExists(File dir) {
        if (dir.exists()) {
            return false;
        }
        return dir.mkdir();
    }

    public static String getResourcePath(Class<?> clazz) {

        URL input = clazz.getProtectionDomain().getCodeSource().getLocation();

        try {
            File myfile = new File(input.toURI());
            File dir = myfile.getParentFile(); // strip off .jar file
            return dir.getAbsolutePath();
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public static String readContent(InputStream input) {
        return new BufferedReader(
                new InputStreamReader(input, StandardCharsets.UTF_8))
                .lines()
                .collect(Collectors.joining("\n"));
    }

    public static InputStream accessFile(Class<?> clazz, String fileName) {

        // this is the path within the jar file
        InputStream input = clazz.getResourceAsStream(
                File.separator + "resources" + File.separator + fileName);
        if (input == null) {
            // this is how we load file within editor
            input = clazz.getClassLoader().getResourceAsStream(fileName);
        }

        return input;
    }
}