Hallo alle zusammen,
ich habe folgende Aufgabe:
Realisieren Sie einen boolean sindGleich(InputStream, InputStream) , der angibt, ob zwei Eingabeströme die gleiche Folge von bytes haben.
Ich habe diese Aufgabe derzeit so gelöst:
Allerdings ist diese Lösung laut meinem Lehrer ineffizient, da ohne Puffer gearbeitet wird und die Methode nicht zuverlässig false bei ungleich langen Streams liefert.
Ich denke, man muss jetzt erst mal am Anfang vor der Methode eine Puffergröße erstellen:
und dann entsprechend noch am Anfang in die Methode einbinden:
Allerdings weis ich jetzt nicht wie weiter und wie man das Problem mit false bei ungleich langen Streams lösen kann.
Ich komme halt nicht drauf und mit einer Lösung lässt sich der Ablauf meist verstehen.
Hoffe das mir jemand bei der Lösung meines Problems helfen kann, danke.
Grüße
ich habe folgende Aufgabe:
Realisieren Sie einen boolean sindGleich(InputStream, InputStream) , der angibt, ob zwei Eingabeströme die gleiche Folge von bytes haben.
Ich habe diese Aufgabe derzeit so gelöst:
Java:
public class InputStreamVergleicher {
public static boolean sindGleich(InputStream is1, InputStream is2) throws IOException {
boolean sindGleich = true;
int bytes1 = is1.read();
int bytes2 = is2.read();
while((bytes1 > 0 && bytes2 > 0)) {
sindGleich = bytes1 == bytes2;
bytes1 = is1.read();
bytes2 = is2.read();
}
return sindGleich;
}
public static void main(String[] args) throws IOException {
byte[] byteFolge = new byte[]{'a', 'b', 'c', 'd', 'a'};
byte[] byteFolge2 = new byte[]{'a', 'b', 'c', 'd', 'a'};
InputStream is1 = new ByteArrayInputStream(byteFolge);
InputStream is2 = new ByteArrayInputStream(byteFolge2);
System.out.println(InputStreamVergleicher.sindGleich(is1, is2));
// Ausgabe: True
}
}
Ich denke, man muss jetzt erst mal am Anfang vor der Methode eine Puffergröße erstellen:
Java:
private static final int PUFFERGROESSE = 1024;
Java:
byte[] puffer1 = new byte[PUFFERGROESSE];
byte[] puffer2 = new byte[PUFFERGROESSE];
Allerdings weis ich jetzt nicht wie weiter und wie man das Problem mit false bei ungleich langen Streams lösen kann.
Ich komme halt nicht drauf und mit einer Lösung lässt sich der Ablauf meist verstehen.
Hoffe das mir jemand bei der Lösung meines Problems helfen kann, danke.
Grüße