Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java')
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java
index 6764f294e0..08d03e1127 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/io/IOUtil.java
@@ -14,10 +14,14 @@ import org.eclipse.net4j.internal.util.bundle.OM;
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.WrappedException;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.CharArrayReader;
+import java.io.CharArrayWriter;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
@@ -26,8 +30,12 @@ import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.io.PrintStream;
+import java.io.Reader;
+import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -60,6 +68,8 @@ public final class IOUtil
private static final char SEP_WINDOWS = '\\';
+ private static final int EOF = -1;
+
private IOUtil()
{
}
@@ -376,6 +386,74 @@ public final class IOUtil
}
}
+ /**
+ * @since 3.1
+ */
+ public static long copyBinary(InputStream inputStream, OutputStream outputStream) throws IOException
+ {
+ if (!(inputStream instanceof BufferedInputStream) && !(inputStream instanceof ByteArrayInputStream))
+ {
+ inputStream = new BufferedInputStream(inputStream);
+ }
+
+ if (!(outputStream instanceof BufferedOutputStream) && !(outputStream instanceof ByteArrayOutputStream))
+ {
+ outputStream = new BufferedOutputStream(outputStream);
+ }
+
+ long size = 0;
+ int b;
+ while ((b = inputStream.read()) != EOF)
+ {
+ outputStream.write(b);
+ }
+
+ outputStream.flush();
+ return size;
+ }
+
+ /**
+ * @since 3.1
+ */
+ public static long copyCharacter(Reader reader, OutputStream outputStream) throws IOException
+ {
+ return copyCharacter(reader, new OutputStreamWriter(outputStream));
+ }
+
+ /**
+ * @since 3.1
+ */
+ public static long copyCharacter(InputStream inputStream, Writer writer) throws IOException
+ {
+ return copyCharacter(new InputStreamReader(inputStream), writer);
+ }
+
+ /**
+ * @since 3.1
+ */
+ public static long copyCharacter(Reader reader, Writer writer) throws IOException
+ {
+ if (!(reader instanceof BufferedReader) && !(reader instanceof CharArrayReader))
+ {
+ reader = new BufferedReader(reader);
+ }
+
+ if (!(writer instanceof BufferedWriter) && !(writer instanceof CharArrayWriter))
+ {
+ writer = new BufferedWriter(writer);
+ }
+
+ long size = 0;
+ int c;
+ while ((c = reader.read()) != EOF)
+ {
+ writer.write(c);
+ }
+
+ writer.flush();
+ return size;
+ }
+
public static int copy(InputStream input, OutputStream output, int size, byte buffer[]) throws IORuntimeException
{
try

Back to the top