]> source.dussan.org Git - poi.git/commitdiff
[bug-69323] DefaultTempFileCreationStrategy should worry about OS deleting the temp...
authorPJ Fanning <fanningpj@apache.org>
Fri, 13 Sep 2024 11:09:21 +0000 (11:09 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 13 Sep 2024 11:09:21 +0000 (11:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1920610 13f79535-47bb-0310-9956-ffa450edef68

poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java

index d469c4744deb7693ef8772d9e85e5edcde460144..588c027b61d497fbd821623d5af3148673de5b31 100644 (file)
@@ -73,9 +73,13 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
         this.dir = dir;
     }
 
-    private void createPOIFilesDirectory() throws IOException {
-        // Create our temp dir only once by double-checked locking
-        // The directory is not deleted, even if it was created by this TempFileCreationStrategy
+    // Create our temp dir only once by double-checked locking
+    // 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) {
             final String tmpDir = System.getProperty(JAVA_IO_TMPDIR);
             if (tmpDir == null) {
@@ -104,7 +108,7 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
     @Override
     public File createTempFile(String prefix, String suffix) throws IOException {
         // Identify and create our temp dir, if needed
-        createPOIFilesDirectory();
+        createPOIFilesDirectoryIfNecessary();
 
         // Generate a unique new filename
         File newFile = Files.createTempFile(dir.toPath(), prefix, suffix).toFile();
@@ -122,7 +126,7 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
     @Override
     public File createTempDirectory(String prefix) throws IOException {
         // Identify and create our temp dir, if needed
-        createPOIFilesDirectory();
+        createPOIFilesDirectoryIfNecessary();
 
         // Generate a unique new filename
         File newDirectory = Files.createTempDirectory(dir.toPath(), prefix).toFile();