]> source.dussan.org Git - poi.git/commitdiff
add back check for if dir already exists
authorPJ Fanning <fanningpj@apache.org>
Wed, 8 May 2024 17:24:41 +0000 (17:24 +0000)
committerPJ Fanning <fanningpj@apache.org>
Wed, 8 May 2024 17:24:41 +0000 (17:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1917583 13f79535-47bb-0310-9956-ffa450edef68

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

index b4105583a2a9c4c158e94112be2785f9778ed1e1..d469c4744deb7693ef8772d9e85e5edcde460144 100644 (file)
@@ -77,15 +77,23 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
         // Create our temp dir only once by double-checked locking
         // The directory is not deleted, even if it was created by this TempFileCreationStrategy
         if (dir == null) {
+            final String tmpDir = System.getProperty(JAVA_IO_TMPDIR);
+            if (tmpDir == null) {
+                throw new IOException("System's temporary directory not defined - set the -D" + JAVA_IO_TMPDIR + " jvm property!");
+            }
             dirLock.lock();
             try {
                 if (dir == null) {
-                    String tmpDir = System.getProperty(JAVA_IO_TMPDIR);
-                    if (tmpDir == null) {
-                        throw new IOException("System's temporary directory not defined - set the -D" + JAVA_IO_TMPDIR + " jvm property!");
-                    }
                     Path dirPath = Paths.get(tmpDir, POIFILES);
-                    dir = Files.createDirectories(dirPath).toFile();
+                    File fileDir = dirPath.toFile();
+                    if (fileDir.exists()) {
+                        if (!fileDir.isDirectory()) {
+                            throw new IOException("Could not create temporary directory. '" + fileDir + "' exists but is not a directory.");
+                        }
+                        dir = fileDir;
+                    } else {
+                        dir = Files.createDirectories(dirPath).toFile();
+                    }
                 }
             } finally {
                 dirLock.unlock();