24package com.dreamfirestudios.dreamcore.DreamFile;
27import java.nio.file.*;
28import java.util.ArrayList;
29import java.util.Comparator;
31import java.util.Objects;
32import java.util.zip.*;
40 if (!directory.exists() || !directory.isDirectory())
return;
42 for (File file : Objects.requireNonNull(directory.listFiles())) {
43 if (file.isDirectory() && cascadeFolders) {
56 if (directory.exists() && directory.isDirectory()) {
66 if (!directory.exists()) {
75 List<File> fileList =
new ArrayList<>();
76 if (!directory.exists() || !directory.isDirectory())
return fileList;
78 for (File file : Objects.requireNonNull(directory.listFiles())) {
79 if (file.isDirectory() && cascadeFolders) {
91 public static void CopyAllFiles(File dirA, File dirB, ArrayList<String> ignore){
93 if(!ignore.contains(dirA.getName())) {
94 if(dirA.isDirectory()) {
97 String files[] = dirA.list();
98 for (String file : files) {
99 File srcFile =
new File(dirA, file);
100 File destFile =
new File(dirB, file);
104 InputStream in =
new FileInputStream(dirA);
105 OutputStream out =
new FileOutputStream(dirB);
106 byte[] buffer =
new byte[1024];
108 while ((length = in.read(buffer)) > 0)
109 out.write(buffer, 0, length);
114 }
catch (IOException e) { }
118 if (!directory.exists())
return 0;
121 for (File file : Objects.requireNonNull(directory.listFiles())) {
122 if (file.isDirectory()) {
125 totalSize += file.length();
131 public static void moveAllFiles(File srcDir, File destDir, List<String> ignore) {
132 if (!srcDir.exists())
return;
136 for (File file : Objects.requireNonNull(srcDir.listFiles())) {
137 if (ignore.contains(file.getName()))
continue;
139 File destFile =
new File(destDir, file.getName());
140 if (file.isDirectory()) {
144 if (file.renameTo(destFile)) {
145 System.out.println(
"Moved file: " + file.getName());
147 System.err.println(
"Failed to move file: " + file.getName());
153 public static List<File>
searchFiles(File directory, String query,
boolean cascadeFolders) {
154 List<File> result =
new ArrayList<>();
155 if (!directory.exists() || !directory.isDirectory())
return result;
157 for (File file : Objects.requireNonNull(directory.listFiles())) {
158 if (file.isDirectory() && cascadeFolders) {
160 }
else if (file.getName().contains(query)) {
168 if (!dirA.exists() || !dirB.exists())
return false;
170 File[] filesA = dirA.listFiles();
171 File[] filesB = dirB.listFiles();
173 if (filesA ==
null || filesB ==
null || filesA.length != filesB.length)
return false;
175 for (
int i = 0; i < filesA.length; i++) {
176 File fileA = filesA[i];
177 File fileB =
new File(dirB, fileA.getName());
179 if (fileA.isDirectory()) {
181 }
else if (!fileB.exists() || fileA.length() != fileB.length()) {
188 public static void zipDirectory(File directory, File zipFile)
throws IOException {
189 try (FileOutputStream fos =
new FileOutputStream(zipFile);
190 ZipOutputStream zos =
new ZipOutputStream(fos)) {
192 zipFile(directory, directory.getName(), zos);
196 public static void extractZip(File zipFile, File destDir)
throws IOException {
197 if (!destDir.exists()) destDir.mkdirs();
199 try (FileInputStream fis =
new FileInputStream(zipFile);
200 ZipInputStream zis =
new ZipInputStream(fis)) {
203 while ((zipEntry = zis.getNextEntry()) !=
null) {
204 File newFile =
new File(destDir, zipEntry.getName());
206 if (zipEntry.isDirectory()) {
209 try (FileOutputStream fos =
new FileOutputStream(newFile)) {
210 byte[] buffer =
new byte[1024];
212 while ((length = zis.read(buffer)) > 0) {
213 fos.write(buffer, 0, length);
223 List<File> files =
new ArrayList<>();
224 if (!directory.exists() || !directory.isDirectory())
return files;
226 for (File file : Objects.requireNonNull(directory.listFiles())) {
227 if (file.isDirectory() && cascadeFolders) {
229 }
else if (file.lastModified() > timestamp) {
236 public static List<File>
sortFiles(File directory, Comparator<File> comparator) {
237 List<File> files =
new ArrayList<>(List.of(Objects.requireNonNull(directory.listFiles())));
238 files.sort(comparator);
243 public static Comparator<File>
sortByName = Comparator.comparing(File::getName);
244 public static Comparator<File>
sortBySize = Comparator.comparingLong(File::length);
247 private static void zipFile(File fileToZip, String fileName, ZipOutputStream zos)
throws IOException {
248 if (fileToZip.isHidden())
return;
250 if (fileToZip.isDirectory()) {
251 if (fileName.endsWith(
"/")) {
252 zos.putNextEntry(
new ZipEntry(fileName));
255 zos.putNextEntry(
new ZipEntry(fileName +
"/"));
258 for (File childFile : Objects.requireNonNull(fileToZip.listFiles())) {
259 zipFile(childFile, fileName +
"/" + childFile.getName(), zos);
264 try (FileInputStream fis =
new FileInputStream(fileToZip)) {
265 ZipEntry zipEntry =
new ZipEntry(fileName);
266 zos.putNextEntry(zipEntry);
268 byte[] buffer =
new byte[1024];
270 while ((length = fis.read(buffer)) >= 0) {
271 zos.write(buffer, 0, length);
static void moveAllFiles(File srcDir, File destDir, List< String > ignore)
static void createDirectory(File directory)
Creates the specified directory if it does not exist.
static List< File > searchFiles(File directory, String query, boolean cascadeFolders)
static void extractZip(File zipFile, File destDir)
static Comparator< File > sortBySize
static Comparator< File > sortByName
static Comparator< File > sortByLastModified
static long calculateTotalSize(File directory)
static void deleteAllFiles(File directory, boolean cascadeFolders)
Deletes all files in the specified directory.
static void CopyAllFiles(File dirA, File dirB, ArrayList< String > ignore)
Copies all files from one directory to another, respecting the ignore list.
static void zipDirectory(File directory, File zipFile)
static void deleteDirectory(File directory)
Deletes the specified directory if it exists.
static boolean compareDirectories(File dirA, File dirB)
static List< File > getFilesModifiedAfter(File directory, long timestamp, boolean cascadeFolders)
static List< File > sortFiles(File directory, Comparator< File > comparator)
static List< File > returnAllFilesFromDirectory(File directory, boolean cascadeFolders)
Returns a list of all files in the specified directory.