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:
parent
ed1fc84a38
commit
f15a35ec45
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user