Poniżej jest jeden sposób, aby rozważyć utworzenie nowego BufferedReader poza oryginalnym BufferedReader.
Zasadniczo wyrzucamy zawartość oryginalnego buforowanego czytnika do ciągu znaków, a następnie odtwarzamy nowy obiekt BufferedReader. Aby ponownie odczytać oryginalny bufor BufferedReader po raz drugi można go oznaczyć, a następnie po jego odczytaniu można go zresetować.
Trzeba pamiętać o tym, że możesz chcieć chronić się przez ataki DDoS, w których może wejść bardzo duży buforowany czytnik, a możesz chcieć uniknąć czytania na zawsze i zapełnić pamięć, możesz po prostu zepsuć pętla po pewnym punkcie lub gdy określony warunek zostanie spełniony.
final String originalBufferedReaderDump;
originalBufferedReaderDump.mark(Integer.MAX_VALUE);
for (String line; (line = originalBufferedReader.readLine()) != null; originalBufferedReaderDump+= line);
originalBufferedReader.reset();
final BufferedReader copiedBufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(originalBufferedReaderDump.getBytes())));
Co dokładnie masz na myśli przez "kopię BufferedReader"? Czy spodziewasz się, że będziesz w stanie przeczytać dwa razy ten sam strumień? To nie jest możliwe. W rzeczywistości jest to sprzeczność w terminach. – EJP