mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
File.deleteOnExit is not recursive. Replaced by DeleteFilesOnShutdown shutdown hook. Fixes #2971
This commit is contained in:
42
arduino-core/src/cc/arduino/files/DeleteFilesOnShutdown.java
Normal file
42
arduino-core/src/cc/arduino/files/DeleteFilesOnShutdown.java
Normal file
@ -0,0 +1,42 @@
|
||||
package cc.arduino.files;
|
||||
|
||||
import processing.app.helpers.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class DeleteFilesOnShutdown implements Runnable {
|
||||
|
||||
public static final DeleteFilesOnShutdown INSTANCE = new DeleteFilesOnShutdown();
|
||||
|
||||
public static void add(File file) {
|
||||
INSTANCE.addFile(file);
|
||||
}
|
||||
|
||||
private final List<File> files;
|
||||
|
||||
public DeleteFilesOnShutdown() {
|
||||
this.files = new LinkedList<File>();
|
||||
}
|
||||
|
||||
public synchronized void addFile(File file) {
|
||||
this.files.add(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<File> copyOfFiles;
|
||||
synchronized (this) {
|
||||
copyOfFiles = new LinkedList<File>(files);
|
||||
}
|
||||
Collections.reverse(copyOfFiles);
|
||||
for (File file : copyOfFiles) {
|
||||
if (file.exists() && file.canWrite()) {
|
||||
FileUtils.recursiveDelete(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
package processing.app;
|
||||
|
||||
import cc.arduino.contributions.libraries.LibrariesIndexer;
|
||||
import cc.arduino.files.DeleteFilesOnShutdown;
|
||||
import cc.arduino.packages.DiscoveryManager;
|
||||
import cc.arduino.packages.Uploader;
|
||||
import cc.arduino.contributions.packages.ContributedTool;
|
||||
import cc.arduino.contributions.packages.ContributionsIndexer;
|
||||
import cc.arduino.utils.ArchiveExtractor;
|
||||
import org.apache.commons.logging.impl.LogFactoryImpl;
|
||||
import org.apache.commons.logging.impl.NoOpLog;
|
||||
import processing.app.debug.Compiler;
|
||||
@ -133,7 +133,7 @@ public class BaseNoGui {
|
||||
//File folder = new File(getTempFolder(), "build");
|
||||
//if (!folder.exists()) folder.mkdirs();
|
||||
buildFolder = createTempFolder("build");
|
||||
buildFolder.deleteOnExit();
|
||||
DeleteFilesOnShutdown.add(buildFolder);
|
||||
}
|
||||
}
|
||||
return buildFolder;
|
||||
@ -703,6 +703,8 @@ public class BaseNoGui {
|
||||
if (args.length == 0)
|
||||
showError(_("No parameters"), _("No command line parameters found"), null);
|
||||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(DeleteFilesOnShutdown.INSTANCE));
|
||||
|
||||
initPlatform();
|
||||
|
||||
initPortableFolder();
|
||||
|
Reference in New Issue
Block a user