J'ai un problème, j'ai besoin de comparer deux entréestreams rapidement.Façon rapide de comparer les flux d'entrées
Aujourd'hui, j'ai une fonction comme ceci:
private boolean isEqual(InputStream i1, InputStream i2) throws IOException {
try {
// do the compare
while (true) {
int fr = i1.read();
int tr = i2.read();
if (fr != tr)
return false;
if (fr == -1)
return true;
}
} finally {
if (i1 != null)
i1.close();
if (i2 != null)
i2.close();
}
}
Mais il est vraiment lent. Je veux utiliser des lectures tamponnées mais je n'ai pas trouvé une bonne façon de le faire.
Quelques trucs supplémentaires qui le rend plus difficile:
- Je ne veux pas lire l'un des flux d'entrée dans la mémoire (l'entier)
- Je ne veux pas utiliser un tiers bibliothèque
J'ai besoin d'une solution pratique - code! :)
I ne pensez pas que vous pouvez comparer n'importe quoi sans le lire dans la mémoire. Voulez-vous réellement lire le * inputtream * entier en mémoire, ce qui signifie que lire un nombre fixe d'octets est correct? – Patrick
Je voulais dire que la lecture de l'intégralité du flux d'entrée en mémoire n'est pas une option – dacwe