Qui di seguito è un modo di prendere in considerazione la creazione di un nuovo BufferedReader fuori dal BufferedReader originale.
In sostanza, stiamo riversando il contenuto del lettore bufferizzato originale in una stringa e quindi ricreando un nuovo oggetto BufferedReader. Per poter rileggere l'originale BufferedReader una seconda volta è possibile contrassegnarlo e quindi dopo averlo letto, è possibile ripristinarlo.
Una cosa da tenere a mente è che potresti voler proteggere dagli attacchi DDOS, in cui un lettore bufferato molto grande può entrare e potresti voler evitare di leggere per sempre e riempire la memoria, puoi fondamentalmente rompere il loop dopo un certo punto o quando viene soddisfatta una determinata condizione.
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())));
fonte
2017-10-18 17:46:28
Che cosa intendi esattamente con "copia di un BufferedReader"? Ti aspetti in qualche modo di poter leggere lo stesso stream due volte? Non è possibile. In effetti è una contraddizione in termini. – EJP