commit fafd16eb8cb095a2371ee1831e557405ade02ce8 Author: Begerad, Stefan Date: Sat Aug 7 02:22:15 2021 -0400 feat(files-age-rm): inital commit diff --git a/files-age-rm/pom.xml b/files-age-rm/pom.xml new file mode 100644 index 0000000..84b7dfe --- /dev/null +++ b/files-age-rm/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + de.begerad.file-age-rm + file-age-rm + 0.0.1-SNAPSHOT + + + UTF-8 + + + + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.9.0 + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + + shade + + + true + + + de.begerad.fileagerm.Main + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + diff --git a/files-age-rm/src/main/java/de/begerad/fileagerm/FileList.java b/files-age-rm/src/main/java/de/begerad/fileagerm/FileList.java new file mode 100644 index 0000000..f0f383b --- /dev/null +++ b/files-age-rm/src/main/java/de/begerad/fileagerm/FileList.java @@ -0,0 +1,43 @@ +package de.begerad.fileagerm; + +import java.io.File; +import java.io.FileFilter; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class FileList { + private final String directory; + + public FileList(String directory) { + this.directory = directory; + } + + /** + * + * @return set containing list of file paths + */ + public Set listFilesUsingJavaIO() { + return Stream.of(new File(directory).listFiles()) + .filter(file -> !file.isDirectory()) + .map(File::getName) + .collect(Collectors.toSet()); + } + + /** + * + * @return array containing list of file names + */ + public File[] listFilesUsingFileFilter() { + //Creating a File object for directory + File dir = new File(directory); + //Creating filter for directory files + FileFilter fileFilter = new FileFilter() { + public boolean accept(File dir) { + return dir.isFile(); + } + }; + + return dir.listFiles(fileFilter); + } +} diff --git a/files-age-rm/src/main/java/de/begerad/fileagerm/Main.java b/files-age-rm/src/main/java/de/begerad/fileagerm/Main.java new file mode 100644 index 0000000..18f9a4d --- /dev/null +++ b/files-age-rm/src/main/java/de/begerad/fileagerm/Main.java @@ -0,0 +1,95 @@ +package de.begerad.fileagerm; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.util.Calendar; +import java.util.Set; + +public class Main { + public static String dirPath = ""; + + public final static Logger LOG = LoggerFactory.getLogger(Main.class); + + public static void deleteFilesOlderThanNdays(int daysBack, String dirWay) { + + File directory = new File(dirWay); + if (directory.exists()) { + + File[] listFiles = directory.listFiles(); + long purgeTime = System.currentTimeMillis() - (daysBack * 24 * 60 * 60 * 1000); + for (File listFile : listFiles) { + if (listFile.lastModified() < purgeTime) { + if (!listFile.delete()) { + System.err.println("Unable to delete file: " + listFile); + Main.LOG.error("file could NOT be deleted: {}", listFiles); + } else { + + } + } else { + Main.LOG.debug("file is too young to be deleted"); + } + } + } else { + Main.LOG.warn("directory does not exist"); + } + } + + public static void main(String[] args) { + LOG.debug("main() started..."); + + //check user input for directory + if (args.length < 1) { + System.out.println("Please enter directory as first parameter."); + return; + } + + dirPath = args[0]; + if (!(new File(dirPath).isDirectory())) { + System.out.println("first parameter: " + + dirPath + + " is NOT a valid directory."); + return; + } + try { + System.out.println("dir path: " + + (new File(dirPath).getCanonicalPath())); + LOG.debug("dir path: {}", + (new File(dirPath).getCanonicalPath())); + } catch (IOException e) { + e.printStackTrace(); + } + + FileList fileList = new FileList(dirPath); + File[] list = fileList.listFilesUsingFileFilter(); + LOG.debug("List of files in the specified directory:"); + if (list != null) { + for (File fileName : list) { + LOG.debug("{}", fileName); + } + } else { + LOG.warn("List of files is empty"); + } + + Set setList = fileList.listFilesUsingJavaIO(); + LOG.debug("List of files in the specified directory:"); + for (String file : setList) { + LOG.debug("{}", file); + } + + int age = 1; + long purgeTime = System.currentTimeMillis() - (age * 24L * 60L * 60L * 1000L); + LOG.debug("age in ms: {}", purgeTime); + + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DAY_OF_MONTH, age * -1); + purgeTime = cal.getTimeInMillis(); + LOG.debug("age in ms: {}", purgeTime); + + deleteFilesOlderThanNdays(age, dirPath); + + LOG.debug("main() done."); + } +} diff --git a/files-age-rm/src/main/resources/log4j2.xml b/files-age-rm/src/main/resources/log4j2.xml new file mode 100644 index 0000000..6a69742 --- /dev/null +++ b/files-age-rm/src/main/resources/log4j2.xml @@ -0,0 +1,31 @@ + + + + + + [%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} %m%n + + + + + + + + + + + + + + + + + + + + +