From 8f92f2efdce6d14e1892675557e87eb507495db3 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Tue, 29 Sep 2015 19:29:48 -0400 Subject: [PATCH 1/2] Clean up delete dir --- app/src/processing/app/Util.java | 43 +++++++++----------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/app/src/processing/app/Util.java b/app/src/processing/app/Util.java index 4a065b905..535cdbf83 100644 --- a/app/src/processing/app/Util.java +++ b/app/src/processing/app/Util.java @@ -302,41 +302,22 @@ public class Util { /** * Remove all files in a directory and the directory itself. */ - static public void removeDir(File dir) { - if (dir.exists()) { - removeDescendants(dir); - if (!dir.delete()) { - System.err.println("Could not delete " + dir); - } - } - } + static public boolean removeDir(File dir) { + if (!dir.exists()) return true; - - /** - * Recursively remove all files within a directory, - * used with removeDir(), or when the contents of a dir - * should be removed, but not the directory itself. - * (i.e. when cleaning temp files from lib/build) - */ - static public void removeDescendants(File dir) { - if (!dir.exists()) return; - - String files[] = dir.list(); - for (int i = 0; i < files.length; i++) { - if (files[i].equals(".") || files[i].equals("..")) continue; - File dead = new File(dir, files[i]); - if (!dead.isDirectory()) { - if (!Preferences.getBoolean("compiler.save_build_files")) { - if (!dead.delete()) { - // temporarily disabled - System.err.println("Could not delete " + dead); - } + boolean result = true; + File[] files = dir.listFiles(); + if (files != null) { + for (File child : files) { + if (child.isFile()) { + result &= child.delete(); + } else if (child.isDirectory()) { + result &= removeDir(child); } - } else { - removeDir(dead); - //dead.delete(); } } + result &= dir.delete(); + return result; } From 402f96337859d2b454ec87b2a66fbcda9a6d90e7 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Tue, 29 Sep 2015 21:03:15 -0400 Subject: [PATCH 2/2] Comeback of deleteDir --- app/src/processing/app/Util.java | 23 ++++++++++++++++--- .../app/contrib/AvailableContribution.java | 4 ++-- .../app/contrib/LocalContribution.java | 3 +-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/processing/app/Util.java b/app/src/processing/app/Util.java index 535cdbf83..8e51428a0 100644 --- a/app/src/processing/app/Util.java +++ b/app/src/processing/app/Util.java @@ -301,8 +301,17 @@ public class Util { /** * Remove all files in a directory and the directory itself. + * Prints error messages with failed filenames. */ static public boolean removeDir(File dir) { + return removeDir(dir, true); + } + + /** + * Remove all files in a directory and the directory itself. + * Optinally prints error messages with failed filenames. + */ + static public boolean removeDir(File dir, boolean printErrorMessages) { if (!dir.exists()) return true; boolean result = true; @@ -310,13 +319,21 @@ public class Util { if (files != null) { for (File child : files) { if (child.isFile()) { - result &= child.delete(); + boolean deleted = child.delete(); + if (!deleted && printErrorMessages) { + System.err.println("Could not delete " + child.getAbsolutePath()); + } + result &= deleted; } else if (child.isDirectory()) { - result &= removeDir(child); + result &= removeDir(child, printErrorMessages); } } } - result &= dir.delete(); + boolean deleted = dir.delete(); + if (!deleted && printErrorMessages) { + System.err.println("Could not delete " + dir.getAbsolutePath()); + } + result &= deleted; return result; } diff --git a/app/src/processing/app/contrib/AvailableContribution.java b/app/src/processing/app/contrib/AvailableContribution.java index f410f890e..7d15eafb3 100644 --- a/app/src/processing/app/contrib/AvailableContribution.java +++ b/app/src/processing/app/contrib/AvailableContribution.java @@ -196,7 +196,7 @@ public class AvailableContribution extends Contribution { } // 4. Okay, now actually delete that temp folder - Util.removeDir(newContribFolder); + Util.removeDir(newContribFolder, false); } else { if (status != null) { @@ -207,7 +207,7 @@ public class AvailableContribution extends Contribution { // Remove any remaining boogers if (tempFolder.exists()) { - Util.removeDir(tempFolder); + Util.removeDir(tempFolder, false); } return installedContrib; } diff --git a/app/src/processing/app/contrib/LocalContribution.java b/app/src/processing/app/contrib/LocalContribution.java index 8e23416ab..dc182b9bb 100644 --- a/app/src/processing/app/contrib/LocalContribution.java +++ b/app/src/processing/app/contrib/LocalContribution.java @@ -449,8 +449,7 @@ public abstract class LocalContribution extends Contribution { if (doBackup) { success = backup(true, status); } else { - Util.removeDir(getFolder()); - success = !getFolder().exists(); + success = Util.removeDir(getFolder(), false); } if (success) {