Author: nick
Date: Thu Oct 10 16:20:07 2013
New Revision: 1531040
URL: http://svn.apache.org/r1531040
Log:
Fix #55647 - When creating a temp file, ensure the name isn't already taken
Modified:
poi/trunk/src/java/org/apache/poi/util/TempFile.java
Modified: poi/trunk/src/java/org/apache/poi/util/TempFile.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/TempFile.java?rev=1531040&r1=1531039&r2=1531040&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/TempFile.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/TempFile.java Thu Oct 10 16:20:07
2013
@@ -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;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]