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
This commit is contained in:
Nick Burch 2013-10-10 16:20:07 +00:00
parent ed1fc84a38
commit f15a35ec45
1 changed files with 11 additions and 0 deletions

View File

@ -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;
}
}