Originariamente inviato da luapaul
Quello che voglio fare è soltanto poter copiare il Reader nell'oggetto file e in caso di disconnessione(perchè lavoro in rete) di ritentare almeno 5. Quindi ho bisogno di chiudere e riaprire il Reader oppure di resettarlo.
Allora: "riaprirlo" in quel textWrite() no, non puoi e per diversi motivi.
Innanzitutto le classi di I/O non hanno metodi per "riaprire". La "apertura" di un oggetto di I/O la fa concettualmente/tecnicamente il costruttore. Poi quel textWrite() sa solo di ricevere un Reader. Reader è una classe astratta e quindi bisognerebbe vedere quale è la classe "concreta" usata, che potrebbe anche essere un "wrapper" che incapsula altro (e magari altro ancora ecc...).

Potresti saperlo tu a priori oppure no cosa è realmente.... comunque anche se lo sapessi non avresti in quel punto, presumo, i dati usati per ricostruire il XYZReader (anche cosa c'è eventualmente "sotto").

Reader ha i metodi reset()/mark() ma una implementazione specifica potrebbe non supportare queste operazioni. Quindi torniamo al punto di prima col fatto che dovresti sapere bene a priori quale è esattamente e se supporta questi metodi.

Dipende cosa c'è "sotto": se ad esempio fosse un InputStreamReader (estensione di Reader) che incapsula un InputStream di un socket, allora di certo tutta la catena non supporta il reset (non vedo come si possa materialmente tornare "indietro" su un socket!).

In quel textWrite() l'unica cosa sensata e possibile che potresti fare è "bufferizzare" tutto il contenuto leggibile dal Reader e tenerlo o in memoria o su file. Ma in ogni caso stavolta tu sapresti cosa hai e come gestirlo e quindi potresti rileggerlo quante volte vuoi.