]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
style and javadocs
authorJeremias Maerki <jeremias@apache.org>
Mon, 2 Dec 2002 14:15:08 +0000 (14:15 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 2 Dec 2002 14:15:08 +0000 (14:15 +0000)
added new method toByteArray()

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@195708 13f79535-47bb-0310-9956-ffa450edef68

src/org/apache/fop/util/StreamUtilities.java

index 418d656e077dea6dc86270a195740ed1d2352dd3..f88fc1d91a2a3037802ef55b5d2d414653436950 100644 (file)
@@ -8,6 +8,7 @@ package org.apache.fop.util;
 
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.EOFException;
 import java.io.DataInput;
@@ -29,6 +30,10 @@ public class StreamUtilities {
      * The process is buffered, so you shouldn't need
      * BufferedInput/OutputStreams. Flushes when it's finished, but does
      * not close either stream. Returns the number of bytes copied.
+     * @param source InputStream to read from
+     * @param sink OutputStream to write to
+     * @return long the total number of bytes copied
+     * @throws IOException In case of an I/O problem
      */
     public static long streamCopy(InputStream source,
                                   OutputStream sink) throws IOException {
@@ -39,8 +44,9 @@ public class StreamUtilities {
         // trough
         int scoop;
         while ((scoop = source.read(buffer)) >= 0) {
-            if (scoop == 0)
+            if (scoop == 0) {
                 System.out.println("zero scoop!");
+            }
             sink.write(buffer, 0, scoop);
             total += scoop;
         }
@@ -51,6 +57,9 @@ public class StreamUtilities {
         return total;
     }
 
+    /**
+     * Method streamCopy.
+     */
     /**
      * Binary copies up to the given number of bytes from an input
      * stream to an output stream. The process is buffered, so you
@@ -58,7 +67,11 @@ public class StreamUtilities {
      * Flushes when it's finished, but does not close either stream.
      * Throws an EOFExeption if there aren't enough bytes available to
      * transfer the requested amount.
-     * Returns the total number of bytes copied.
+     * @param source InputStream to read from
+     * @param sink OutputStream to write to
+     * @param howMany requested amount of bytes that are to be copied
+     * @return long the total number of bytes copied
+     * @throws IOException In case of an I/O problem
      */
     public static long streamCopy(InputStream source,
                                   OutputStream sink, int howMany) throws IOException {
@@ -70,10 +83,12 @@ public class StreamUtilities {
         int scoop;
         while (left > 0) {
             scoop = source.read(buffer, 0, Math.min(BUFFER_SIZE, left));
-            if (scoop < 0)
+            if (scoop < 0) {
                 throw new EOFException(
-                  "Not enough bytes to feed you in IOLib.streamCopy(source, sink, howMany); you asked for " +
-                  howMany + " and I only have " + (howMany - left));
+                  "Not enough bytes to feed you in "
+                  + "IOLib.streamCopy(source, sink, howMany); you asked for " 
+                  + howMany + " and I only have " + (howMany - left));
+            }
 
             sink.write(buffer, 0, scoop);
             left -= scoop;
@@ -85,6 +100,9 @@ public class StreamUtilities {
         return howMany;
     }
 
+    /**
+     * Method streamCopyWithChecksum.
+     */
     /**
      * Binary copies up to the given number of bytes from an input
      * stream to an output stream. The process is buffered, so you
@@ -92,7 +110,11 @@ public class StreamUtilities {
      * Flushes when it's finished, but does not close either stream.
      * Throws an EOFExeption if there aren't enough bytes available
      * to transfer the requested amount.
-     * Returns the checksum of the bytes copied.
+     * @param source InputStream to read from
+     * @param sink OutputStream to write to
+     * @param howMany requested amount of bytes that are to be copied
+     * @return long the checksum of the bytes copied
+     * @throws IOException In case of an I/O problem
      */
     public static long streamCopyWithChecksum(InputStream source,
             OutputStream sink, int howMany) throws IOException {
@@ -105,8 +127,10 @@ public class StreamUtilities {
         int scoop;
         while (left > 0) {
             scoop = source.read(buffer, 0, Math.min(BUFFER_SIZE, left));
-            if (scoop < 0)
-                throw new EOFException("Not enough bytes to feed you in IOLib.streamCopy(source, sink, howMany)");
+            if (scoop < 0) {
+                throw new EOFException("Not enough bytes to feed you in "
+                        + "IOLib.streamCopy(source, sink, howMany)");
+            }
 
             checksummer.update(buffer, 0, scoop);
             sink.write(buffer, 0, scoop);
@@ -119,11 +143,18 @@ public class StreamUtilities {
         return checksummer.getValue();
     }
 
+    /**
+     * Method dataCopy.
+     */
     /**
      * Binary copies up to the given number of bytes from a DataInput
      * object to an DataOutput object. The process is buffered. Since
      * DataOutput doesn't support closing or flushing, it does neither.
-     * Returns the total number of bytes copied.
+     * @param source DataInput to read from
+     * @param sink DataOutput to write to
+     * @param howMany requested amount of bytes that are to be copied
+     * @return long the total number of bytes copied
+     * @throws IOException In case of an I/O problem
      */
     public static long dataCopy(DataInput source, DataOutput sink,
                                 int howMany) throws IOException {
@@ -144,4 +175,25 @@ public class StreamUtilities {
         return howMany;
     }
 
+
+    /**
+     * Loads the contents of the InputStream to a byte array. The InputStream 
+     * isn't closed.
+     * @param in InputStream to read from
+     * @param initialTargetBufferSize initial number of bytes to allocate 
+     *      (expected size to avoid a lot of reallocations)
+     * @return byte[] the array of bytes requested
+     * @throws IOException In case of an I/O problem
+     */
+    public static byte[] toByteArray(InputStream in, int initialTargetBufferSize) 
+                throws IOException {
+        ByteArrayOutputStream baout = new ByteArrayOutputStream(initialTargetBufferSize);
+        try {
+            streamCopy(in, baout);
+        } finally {
+            baout.close();
+        }
+        return baout.toByteArray();
+    }
+
 }