From 67594e4e5cea020807ee6d268be4a1720c969f24 Mon Sep 17 00:00:00 2001 From: Joachim Klein Date: Tue, 30 Jan 2018 09:52:44 +0100 Subject: [PATCH] PrismSettings: create directories when saving settings file When saving the settings file, we now create non-existent directories on the path to the file (mkdir -p style). Additionally, use try (...) {} construction so that the FileWriter is closed on any exception. --- prism/src/prism/PrismSettings.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/prism/src/prism/PrismSettings.java b/prism/src/prism/PrismSettings.java index 6dfb7f50..e3ab7f13 100644 --- a/prism/src/prism/PrismSettings.java +++ b/prism/src/prism/PrismSettings.java @@ -696,9 +696,24 @@ public class PrismSettings implements Observer public synchronized void saveSettingsFile(File file) throws PrismException { - try - { - FileWriter out = new FileWriter(file); + // first, we ensure the directories for the file that don't exist yet + // are created + File parent = null; + try { + parent = file.getAbsoluteFile().getParentFile(); + if (parent != null && !parent.exists()) { + parent.mkdirs(); + } + } catch (Exception e) { + if (parent != null) { + throw new PrismException("Error creating required directories (" + parent + ") for file " + file + ": " +e.getMessage()); + } else { + throw new PrismException("Error creating required directories for file " + file + ": " +e.getMessage()); + } + } + + // and now, we write the settings to file + try (FileWriter out = new FileWriter(file)) { out.write("# " + Prism.getToolName() + " settings file\n"); out.write("# (created by version "+Prism.getVersion()+")\n");