mirror of https://github.com/apache/poi.git
[bug-69323] DefaultTempFileCreationStrategy should worry about OS deleting the temp dir. Thanks to Palle Girgensohn. This closes #691
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1920610 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5b404ebc6b
commit
5a977d1a7b
|
@ -73,9 +73,13 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
|
||||||
this.dir = dir;
|
this.dir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPOIFilesDirectory() throws IOException {
|
// Create our temp dir only once by double-checked locking
|
||||||
// Create our temp dir only once by double-checked locking
|
// The directory is not deleted, even if it was created by this TempFileCreationStrategy
|
||||||
// The directory is not deleted, even if it was created by this TempFileCreationStrategy
|
private void createPOIFilesDirectoryIfNecessary() throws IOException {
|
||||||
|
// First make sure we recreate the directory if it was not somehow removed by a third party
|
||||||
|
if (dir != null && !dir.exists()) {
|
||||||
|
dir = null;
|
||||||
|
}
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
final String tmpDir = System.getProperty(JAVA_IO_TMPDIR);
|
final String tmpDir = System.getProperty(JAVA_IO_TMPDIR);
|
||||||
if (tmpDir == null) {
|
if (tmpDir == null) {
|
||||||
|
@ -104,7 +108,7 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
|
||||||
@Override
|
@Override
|
||||||
public File createTempFile(String prefix, String suffix) throws IOException {
|
public File createTempFile(String prefix, String suffix) throws IOException {
|
||||||
// Identify and create our temp dir, if needed
|
// Identify and create our temp dir, if needed
|
||||||
createPOIFilesDirectory();
|
createPOIFilesDirectoryIfNecessary();
|
||||||
|
|
||||||
// Generate a unique new filename
|
// Generate a unique new filename
|
||||||
File newFile = Files.createTempFile(dir.toPath(), prefix, suffix).toFile();
|
File newFile = Files.createTempFile(dir.toPath(), prefix, suffix).toFile();
|
||||||
|
@ -122,7 +126,7 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
|
||||||
@Override
|
@Override
|
||||||
public File createTempDirectory(String prefix) throws IOException {
|
public File createTempDirectory(String prefix) throws IOException {
|
||||||
// Identify and create our temp dir, if needed
|
// Identify and create our temp dir, if needed
|
||||||
createPOIFilesDirectory();
|
createPOIFilesDirectoryIfNecessary();
|
||||||
|
|
||||||
// Generate a unique new filename
|
// Generate a unique new filename
|
||||||
File newDirectory = Files.createTempDirectory(dir.toPath(), prefix).toFile();
|
File newDirectory = Files.createTempDirectory(dir.toPath(), prefix).toFile();
|
||||||
|
|
Loading…
Reference in New Issue