This is an automated email from the ASF dual-hosted git repository. juanpablo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 283cf393a47d1e60a6a75948cb317d0c0b1fab32 Author: juanpablo <[email protected]> AuthorDate: Sat Oct 12 14:01:08 2019 +0200 changes on FileUtils: * readContents uses try with resources * buffer doubles its size so it copyContents(InputStream, OutputStream) method mimics private Files.copyContents(InputStream, OutputStream) more closely * copyContents(InputStream, OutputStream) enforces writes to disk for FileOutputStream through their associated FileDescriptor --- .../main/java/org/apache/wiki/util/FileUtil.java | 32 +++++++--------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/jspwiki-util/src/main/java/org/apache/wiki/util/FileUtil.java b/jspwiki-util/src/main/java/org/apache/wiki/util/FileUtil.java index 30c1354..89f0299 100644 --- a/jspwiki-util/src/main/java/org/apache/wiki/util/FileUtil.java +++ b/jspwiki-util/src/main/java/org/apache/wiki/util/FileUtil.java @@ -23,6 +23,7 @@ import org.apache.log4j.Logger; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -47,7 +48,7 @@ import java.nio.charset.StandardCharsets; public final class FileUtil { /** Size of the buffer used when copying large chunks of data. */ - private static final int BUFFER_SIZE = 4096; + private static final int BUFFER_SIZE = 8192; private static final Logger log = Logger.getLogger(FileUtil.class); /** @@ -166,6 +167,12 @@ public final class FileUtil { } out.flush(); + + // FileOutputStream.flush is an empty method, so in this case we grab the underlying file descriptor and force from there thw write to disk + if( out instanceof FileOutputStream ) { + FileDescriptor fd = ( ( FileOutputStream )out ).getFD(); + fd.sync(); + } } /** @@ -231,30 +238,11 @@ public final class FileUtil { * @return String read from the Reader * @throws IOException If reading fails. */ - public static String readContents( Reader in ) - throws IOException - { - Writer out = null; - - try - { - out = new StringWriter(); - + public static String readContents( final Reader in ) throws IOException { + try( Writer out = new StringWriter() ) { copyContents( in, out ); - return out.toString(); } - finally - { - try - { - out.close(); - } - catch( Exception e ) - { - log.error("Not able to close the stream while reading contents."); - } - } } /**
