From b34a3eefa7662cd666d360facd65af20e298298a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 10 Oct 2013 16:20:07 +0000 Subject: [PATCH] Fix #55647 - When creating a temp file, ensure the name isn't already taken git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1531040 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/util/TempFile.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/java/org/apache/poi/util/TempFile.java b/src/java/org/apache/poi/util/TempFile.java index d9489fb8ad..82578886bf 100644 --- a/src/java/org/apache/poi/util/TempFile.java +++ b/src/java/org/apache/poi/util/TempFile.java @@ -37,6 +37,7 @@ public final class TempFile { * Don't forget to close all files or it might not be possible to delete them. */ public static File createTempFile(String prefix, String suffix) { + // Identify and create our temp dir, if needed if (dir == null) { dir = new File(System.getProperty("java.io.tmpdir"), "poifiles"); @@ -45,9 +46,19 @@ public final class TempFile { dir.deleteOnExit(); } + // Generate a unique new filename File newFile = new File(dir, prefix + rnd.nextInt() + suffix); + if (newFile.exists()) + { + // That name is already taken, try another + newFile = createTempFile(prefix, suffix); + } + + // Set the delete on exit flag, unless explicitly disabled if (System.getProperty("poi.keep.tmp.files") == null) newFile.deleteOnExit(); + + // All done return newFile; } } -- 2.39.5