У меня проблема, мне нужно быстро сравнить два входа.Быстрый способ сравнения входных потоков
Сегодня у меня есть функция, как это:
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();
}
}
Но это очень медленно. Я хочу использовать буферизованные чтения, но не придумал хороший способ сделать это.
Некоторые дополнительные вещи, которые делают его более трудным:
- Я не хочу, чтобы прочитать один из входных потоков в памяти (весь один)
- Я не хочу, чтобы использовать третью сторону библиотека
Мне нужно практическое решение - код! :)
I не думайте, что вы можете сравнивать что-либо, не читая его в памяти. Вы действительно имеете в виду чтение * всего входного потока * в память, то есть чтение фиксированного количества байтов в порядке? – Patrick
Я имел в виду, что чтение всего входного потока в память не является опцией – dacwe