mirror of https://github.com/apache/poi.git
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
793791ece8
commit
b34a3eefa7
|
@ -37,6 +37,7 @@ public final class TempFile {
|
||||||
* Don't forget to close all files or it might not be possible to delete them.
|
* Don't forget to close all files or it might not be possible to delete them.
|
||||||
*/
|
*/
|
||||||
public static File createTempFile(String prefix, String suffix) {
|
public static File createTempFile(String prefix, String suffix) {
|
||||||
|
// Identify and create our temp dir, if needed
|
||||||
if (dir == null)
|
if (dir == null)
|
||||||
{
|
{
|
||||||
dir = new File(System.getProperty("java.io.tmpdir"), "poifiles");
|
dir = new File(System.getProperty("java.io.tmpdir"), "poifiles");
|
||||||
|
@ -45,9 +46,19 @@ public final class TempFile {
|
||||||
dir.deleteOnExit();
|
dir.deleteOnExit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generate a unique new filename
|
||||||
File newFile = new File(dir, prefix + rnd.nextInt() + suffix);
|
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)
|
if (System.getProperty("poi.keep.tmp.files") == null)
|
||||||
newFile.deleteOnExit();
|
newFile.deleteOnExit();
|
||||||
|
|
||||||
|
// All done
|
||||||
return newFile;
|
return newFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue