diff options
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.java | 78 |
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 |