package io.shockah.skylark.util; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.nio.file.attribute.FileAttribute; public final class FileUtils { public static Path createTrueTempFile(FileAttribute<?>... attrs) throws IOException { return createTrueTempFile(null, null, attrs); } public static Path createTrueTempFile(String prefix, String suffix, FileAttribute<?>... attrs) throws IOException { Path tmp = Files.createTempFile(prefix, suffix, attrs); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { Files.delete(tmp); } catch (IOException e) { } } }); return tmp; } public static Path copyAsTrueTempFile(Path source, FileAttribute<?>... attrs) throws IOException { String suffix = null; String fname = source.getFileName().toString(); if (fname.contains(".")) { String[] split = fname.split("\\."); suffix = "." + split[split.length - 1]; } return copyAsTrueTempFile(source, null, suffix, attrs); } public static Path copyAsTrueTempFile(Path source, String prefix, String suffix, FileAttribute<?>... attrs) throws IOException { Path tmp = createTrueTempFile(prefix, suffix, attrs); Files.copy(source, tmp, StandardCopyOption.REPLACE_EXISTING); return tmp; } private FileUtils() { throw new UnsupportedOperationException(); } }