Index: src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 9206)
+++ src/org/openstreetmap/josm/actions/SessionLoadAction.java	(working copy)
@@ -163,9 +163,7 @@
                     viewport = reader.getViewport();
                 } finally {
                     if (tempFile) {
-                        if (!file.delete()) {
-                            file.deleteOnExit();
-                        }
+                        Utils.deleteFile(file);
                         file = null;
                     }
                 }
Index: src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 9206)
+++ src/org/openstreetmap/josm/data/AutosaveTask.java	(working copy)
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.BufferedReader;
@@ -39,6 +40,7 @@
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.OsmExporter;
 import org.openstreetmap.josm.io.OsmImporter;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Saves data layers periodically so they can be recovered in case of a crash.
@@ -193,13 +195,8 @@
         }
         while (info.backupFiles.size() > PROP_FILES_PER_LAYER.get()) {
             File oldFile = info.backupFiles.remove();
-            if (!oldFile.delete()) {
-                Main.warn(tr("Unable to delete old backup file {0}", oldFile.getAbsolutePath()));
-            } else {
-                File pidFile = getPidFile(oldFile);
-                if (!pidFile.delete()) {
-                    Main.warn(tr("Unable to delete old backup file {0}", pidFile.getAbsolutePath()));
-                }
+            if (Utils.deleteFile(oldFile, marktr("Unable to delete old backup file {0}"))) {
+                Utils.deleteFile(getPidFile(oldFile), marktr("Unable to delete old backup file {0}"));
             }
         }
     }
@@ -272,8 +269,8 @@
                             moveToDeletedLayersFolder(lastFile);
                         }
                         for (File file: info.backupFiles) {
-                            if (file.delete()) {
-                                getPidFile(file).delete();
+                            if (Utils.deleteFile(file)) {
+                                Utils.deleteFile(getPidFile(file));
                             }
                         }
 
@@ -368,20 +365,16 @@
 
         if (backupFile.exists()) {
             deletedLayers.remove(backupFile);
-            if (!backupFile.delete()) {
-                Main.warn(String.format("Could not delete old backup file %s", backupFile));
-            }
+            Utils.deleteFile(backupFile, marktr("Unable to delete old backup file {0}"));
         }
         if (f.renameTo(backupFile)) {
             deletedLayers.add(backupFile);
-            pidFile.delete();
+            Utils.deleteFile(pidFile);
         } else {
             Main.warn(String.format("Could not move autosaved file %s to %s folder", f.getName(), deletedLayersDir.getName()));
             // we cannot move to deleted folder, so just try to delete it directly
-            if (!f.delete()) {
-                Main.warn(String.format("Could not delete backup file %s", f));
-            } else if (!pidFile.delete()) {
-                Main.warn(String.format("Could not delete PID file %s", pidFile));
+            if (Utils.deleteFile(f, marktr("Unable to delete backup file {0}"))) {
+                Utils.deleteFile(pidFile, marktr("Unable to delete PID file {0}"));
             }
         }
         while (deletedLayers.size() > PROP_DELETED_LAYERS.get()) {
@@ -389,9 +382,7 @@
             if (next == null) {
                 break;
             }
-            if (!next.delete()) {
-                Main.warn(String.format("Could not delete archived backup file %s", next));
-            }
+            Utils.deleteFile(next, marktr("Unable to delete archived backup file {0}"));
         }
     }
 
Index: src/org/openstreetmap/josm/data/CustomConfigurator.java
===================================================================
--- src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 9206)
+++ src/org/openstreetmap/josm/data/CustomConfigurator.java	(working copy)
@@ -313,10 +313,8 @@
                 }
             }
         }
-        try {
-            f.delete();
-        } catch (Exception e) {
-            log("Warning: Can not delete file "+f.getPath()+": "+e.getMessage());
+        if (!Utils.deleteFile(f)) {
+            log("Warning: Can not delete file "+f.getPath());
         }
     }
 
Index: src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- src/org/openstreetmap/josm/data/Preferences.java	(revision 9206)
+++ src/org/openstreetmap/josm/data/Preferences.java	(working copy)
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
@@ -859,9 +860,7 @@
 
         File tmpFile = new File(prefFile + "_tmp");
         Utils.copyFile(tmpFile, prefFile);
-        if (!tmpFile.delete()) {
-            Main.warn(tr("Unable to delete temporary file {0}", tmpFile.getAbsolutePath()));
-        }
+        Utils.deleteFile(tmpFile, marktr("Unable to delete temporary file {0}"));
 
         setCorrectPermissions(prefFile);
         setCorrectPermissions(backupFile);
Index: src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/DownloadFileTask.java	(revision 9206)
+++ src/org/openstreetmap/josm/gui/io/DownloadFileTask.java	(working copy)
@@ -21,6 +21,7 @@
 import org.openstreetmap.josm.gui.PleaseWaitDialog;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
 /**
@@ -130,7 +131,7 @@
                 if (unpack) {
                     Main.info(tr("Unpacking {0} into {1}", file.getAbsolutePath(), file.getParent()));
                     unzipFileRecursively(file, file.getParent());
-                    file.delete();
+                    Utils.deleteFile(file);
                 }
             }
         } catch (MalformedURLException e) {
Index: src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 9206)
+++ src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(working copy)
@@ -808,7 +808,7 @@
                     ImageViewerDialog.showImage(this, null);
                 }
 
-                if (toDelete.getFile().delete()) {
+                if (Utils.deleteFile(toDelete.getFile())) {
                     Main.info("File "+toDelete.getFile()+" deleted. ");
                 } else {
                     JOptionPane.showMessageDialog(
Index: src/org/openstreetmap/josm/io/CachedFile.java
===================================================================
--- src/org/openstreetmap/josm/io/CachedFile.java	(revision 9206)
+++ src/org/openstreetmap/josm/io/CachedFile.java	(working copy)
@@ -335,7 +335,7 @@
                 if (localPath.size() == 2) {
                     File lfile = new File(localPath.get(1));
                     if (lfile.exists()) {
-                        lfile.delete();
+                        Utils.deleteFile(lfile);
                     }
                 }
                 Main.pref.putCollection(prefKey, null);
Index: src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- src/org/openstreetmap/josm/io/OsmExporter.java	(revision 9206)
+++ src/org/openstreetmap/josm/io/OsmExporter.java	(working copy)
@@ -92,7 +92,7 @@
             doSave(file, layer);
             if (noBackup || !Main.pref.getBoolean("save.keepbackup", false)) {
                 if (tmpFile != null) {
-                    tmpFile.delete();
+                    Utils.deleteFile(tmpFile);
                 }
             }
             layer.onPostSaveToFile();
Index: src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
===================================================================
--- src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(revision 9206)
+++ src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(working copy)
@@ -325,7 +325,7 @@
         }
         // remove old stuff or whole update process is broken
         for (File file: siteCacheFiles) {
-            file.delete();
+            Utils.deleteFile(file);
         }
     }
 
Index: src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 9206)
+++ src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(working copy)
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Image;
@@ -365,9 +366,7 @@
                         Main.pref.getPreferencesDirectory().mkdirs();
                         Main.info("Copying old preferences file to new location");
                         Utils.copyFile(oldPref, newPref);
-                        if (!oldPref.delete()) {
-                            Main.warn("Unable to delete old preferences file: "+oldPref.getPath());
-                        }
+                        Utils.deleteFile(oldPref, marktr("Unable to delete old preferences file {0}"));
                     } catch (IOException e) {
                         Main.error(e);
                         error = true;
Index: src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 9206)
+++ src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(working copy)
@@ -189,7 +189,7 @@
     @Override
     public boolean rename(File from, File to) {
         if (to.exists())
-            to.delete();
+            Utils.deleteFile(to);
         return from.renameTo(to);
     }
 
Index: src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- src/org/openstreetmap/josm/tools/Utils.java	(revision 9206)
+++ src/org/openstreetmap/josm/tools/Utils.java	(working copy)
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
@@ -450,8 +451,8 @@
                 for (File file : files) {
                     if (file.isDirectory()) {
                         deleteDirectory(file);
-                    } else if (!file.delete()) {
-                        Main.warn("Unable to delete file: "+file.getPath());
+                    } else {
+                        deleteFile(file);
                     }
                 }
             }
@@ -460,6 +461,33 @@
     }
 
     /**
+     * Deletes a file and log a default warning if the deletion fails.
+     * @param file file to delete
+     * and must contain a single parameter <code>{0}</code> for the file path
+     * @return {@code true} if and only if the file is successfully deleted; {@code false} otherwise
+     * @since XXXX
+     */
+    public static boolean deleteFile(File file) {
+        return deleteFile(file, marktr("Unable to delete file {0}"));
+    }
+
+    /**
+     * Deletes a file and log a configurable warning if the deletion fails.
+     * @param file file to delete
+     * @param warnMsg warning message. It will be translated with {@code tr()}
+     * and must contain a single parameter <code>{0}</code> for the file path
+     * @return {@code true} if and only if the file is successfully deleted; {@code false} otherwise
+     * @since XXXX
+     */
+    public static boolean deleteFile(File file, String warnMsg) {
+        boolean result = file.delete();
+        if (!result) {
+            Main.warn(tr(warnMsg, file.getPath()));
+        }
+        return result;
+    }
+
+    /**
      * <p>Utility method for closing a {@link java.io.Closeable} object.</p>
      *
      * @param c the closeable object. May be null.
Index: test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(revision 9206)
+++ test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(working copy)
@@ -27,6 +27,7 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.tools.MultiMap;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Unit tests for Session writing.
@@ -107,7 +108,7 @@
             fail(e.getMessage());
         } finally {
             if (file.exists()) {
-                file.delete();
+                Utils.deleteFile(file);
             }
         }
     }
