Java tutorial
//package com.java2s; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.Reader; public class Main { public static boolean contentEquals(InputStream input1, InputStream input2) throws IOException { if (!(input1 instanceof BufferedInputStream)) { input1 = new BufferedInputStream((InputStream) input1); } if (!(input2 instanceof BufferedInputStream)) { input2 = new BufferedInputStream((InputStream) input2); } int ch2; for (int ch = ((InputStream) input1).read(); -1 != ch; ch = ((InputStream) input1).read()) { ch2 = ((InputStream) input2).read(); if (ch != ch2) { return false; } } ch2 = ((InputStream) input2).read(); return ch2 == -1; } public static boolean contentEquals(Reader input1, Reader input2) throws IOException { BufferedReader input11 = toBufferedReader(input1); BufferedReader input21 = toBufferedReader(input2); int ch2; for (int ch = input11.read(); -1 != ch; ch = input11.read()) { ch2 = input21.read(); if (ch != ch2) { return false; } } ch2 = input21.read(); return ch2 == -1; } public static int read(Reader input, char[] buffer, int offset, int length) throws IOException { if (length < 0) { throw new IllegalArgumentException("Length must not be negative: " + length); } else { int remaining; int count; for (remaining = length; remaining > 0; remaining -= count) { int location = length - remaining; count = input.read(buffer, offset + location, remaining); if (-1 == count) { break; } } return length - remaining; } } public static int read(Reader input, char[] buffer) throws IOException { return read((Reader) input, (char[]) buffer, 0, buffer.length); } public static int read(InputStream input, byte[] buffer, int offset, int length) throws IOException { if (length < 0) { throw new IllegalArgumentException("Length must not be negative: " + length); } else { int remaining; int count; for (remaining = length; remaining > 0; remaining -= count) { int location = length - remaining; count = input.read(buffer, offset + location, remaining); if (-1 == count) { break; } } return length - remaining; } } public static int read(InputStream input, byte[] buffer) throws IOException { return read((InputStream) input, (byte[]) buffer, 0, buffer.length); } public static BufferedReader toBufferedReader(Reader reader) { return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader); } }