FileReader
(y de hecho nada se extiende lector) es de hecho para texto. Desde el documentation of Reader
:
clase abstracta para leer streams de caracteres.
(. El énfasis es mío) mira el API y verá que todo que ver con el texto - char
en lugar de byte
por todo el lugar.
InputStream
y OutputStream
son para datos binarios, como archivos mp4.
Personalmente, evitaría el FileReader
en conjunto, ya que siempre usa la codificación de caracteres predeterminada del sistema. En su lugar, use InputStreamReader
alrededor de FileInputStream
... pero solo cuando desee manejar el texto.
Como acotación al margen, que es una manera muy ineficiente de la copia de una entrada a una salida ... utilizar las sobrecargas de read
y write
la que leen o escriben en una memoria intermedia de - ya sea un byte[]
o una char[]
. De lo contrario, está llamando a leer y escribir para cada byte/carácter en el archivo.
Debe también cerrar IO en bloques finally
para que estén cerrados incluso si se produce una excepción mientras los está procesando.
http://download.oracle.com/javase/tutorial/essential/io/charstreams.html – Yaneeve