]> source.dussan.org Git - poi.git/commitdiff
[bug-65849] use Files.createTempFile
authorPJ Fanning <fanningpj@apache.org>
Wed, 26 Jan 2022 19:35:06 +0000 (19:35 +0000)
committerPJ Fanning <fanningpj@apache.org>
Wed, 26 Jan 2022 19:35:06 +0000 (19:35 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1897515 13f79535-47bb-0310-9956-ffa450edef68

poi-examples/src/main/java/org/apache/poi/examples/xssf/usermodel/BigGridDemo.java
poi/src/main/java/org/apache/poi/util/DefaultTempFileCreationStrategy.java
poi/src/test/java/org/apache/poi/util/TestIOUtils.java

index 06bc962d5d33c2e4b3b6cc04d0a6739b3af11703..1bb84093696a158b42d54ff81f48474f586c128d 100644 (file)
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
+import java.nio.file.Files;
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -101,7 +102,7 @@ public final class BigGridDemo {
             }
 
             //Step 2. Generate XML file.
-            tmp = File.createTempFile("sheet", ".xml");
+            tmp = Files.createTempFile("sheet", ".xml").toFile();
             try (
                     FileOutputStream stream = new FileOutputStream(tmp);
                     Writer fw = new OutputStreamWriter(stream, XML_ENCODING)
index bbfb03e9abf9ecc54882c611bcc637a336849845..b5ff8afbeba6b992a899d1fa8001db9c85675c36 100644 (file)
@@ -21,6 +21,12 @@ import static org.apache.poi.util.TempFile.JAVA_IO_TMPDIR;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.attribute.FileAttribute;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * Default implementation of the {@link TempFileCreationStrategy} used by {@link TempFile}:
@@ -40,6 +46,8 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
     /** To use files.deleteOnExit after clean JVM exit, set the <code>-Dpoi.delete.tmp.files.on.exit</code> JVM property */
     public static final String DELETE_FILES_ON_EXIT = "poi.delete.tmp.files.on.exit";
 
+    private final FileAttribute<Set<PosixFilePermission>> userPermissions;
+
     /** The directory where the temporary files will be created (<code>null</code> to use the default directory). */
     private File dir;
 
@@ -61,6 +69,10 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
      */
     public DefaultTempFileCreationStrategy(File dir) {
         this.dir = dir;
+        Set<PosixFilePermission> permissions = new HashSet<>();
+        permissions.add(PosixFilePermission.OWNER_READ);
+        permissions.add(PosixFilePermission.OWNER_WRITE);
+        userPermissions = PosixFilePermissions.asFileAttribute(permissions);
     }
 
     private void createPOIFilesDirectory() throws IOException {
@@ -103,7 +115,10 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
         createPOIFilesDirectory();
 
         // Generate a unique new filename
-        File newFile = File.createTempFile(prefix, suffix, dir);
+        HashSet<PosixFilePermission> permissions = new HashSet<>();
+        permissions.add(PosixFilePermission.OWNER_READ);
+        permissions.add(PosixFilePermission.OWNER_WRITE);
+        File newFile = Files.createTempFile(dir.toPath(), prefix, suffix, userPermissions).toFile();
 
         // Set the delete on exit flag, but only when explicitly disabled
         if (System.getProperty(DELETE_FILES_ON_EXIT) != null) {
@@ -121,7 +136,7 @@ public class DefaultTempFileCreationStrategy implements TempFileCreationStrategy
         createPOIFilesDirectory();
 
         // Generate a unique new filename
-        // FIXME: Java 7+: use java.nio.Files#createTempDirectory
+        // FIXME: Java 7+: use java.nio.file.Files#createTempDirectory
         final long n = RandomSingleton.getInstance().nextLong();
         File newDirectory = new File(dir, prefix + Long.toString(n));
         createTempDirectory(newDirectory);
index e5a70fa3bb4c70891a3db449b6195aa7e9be781e..1ce390f96a4cf2e81930334cd07188947ef4b0d0 100644 (file)
@@ -37,6 +37,7 @@ import java.io.PushbackInputStream;
 import java.nio.ByteBuffer;
 import java.nio.channels.ReadableByteChannel;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 
 import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.EmptyFileException;
@@ -181,7 +182,7 @@ final class TestIOUtils {
 
     @Test
     void testCopyToFile() throws IOException {
-        File dest = File.createTempFile("poi-ioutils-", "");
+        File dest = Files.createTempFile("poi-ioutils-", "").toFile();
         try {
             try (InputStream is = new FileInputStream(TMP)) {
                 assertEquals(LENGTH, IOUtils.copy(is, dest));