6666 Path archivo = Path . of(System . getProperty(" user.home" ), " .bashrc" );
6767 InputStream st = Files . newInputStream(archivo); // Si no puede abrirse, genera un error.
6868
69- ya que genera un objeto `` InputStream `` , que es lo mismo que se obtiene al
69+ ya que genera un objeto | InputStream | , que es lo mismo que se obtiene al
7070extraer contenido de una |URL | mediante este código:
7171
7272.. code-block :: java
@@ -83,7 +83,7 @@ y que también coincide con el tipo de ``System.in``:
8383 En consecuencia, a partir de este punto podemos tratar estas tres entradas
8484diferentes de un mismo modo (p.e. usando la clase :java-util: `Scanner
8585<Scanner> `). Si el archivo lo vamos a manejar por líneas lo más adecuado es
86- hacer lo siguiente :
86+ hacer uso de | InputStreamReader | y | BufferedReader | :
8787
8888.. code-block :: java
8989
@@ -93,7 +93,7 @@ hacer lo siguiente:
9393 .. note :: En las siguientes unidades, para el tratamiento de archivos en
9494 distintos formatos de intercambio de información conocidos intentaremos
9595 utilizar un método que nos permita convertir la entrada en un objeto
96- ` InputStream ` , aunque pueda existir algún otro menos verborreico que permita
96+ | InputStream | , aunque pueda existir algún otro menos verborreico que permita
9797 utilizarlo directamente a partir de su nombre. Eso nos asegurará que si la
9898 entrada no es un archivo sino el teclado o una |URL | externa, sabremos cómo
9999 tratarlo.
@@ -112,6 +112,9 @@ hacer lo siguiente:
112112 Charset . defaultCharset() == StandardCharsets . UTF_8 ; // true
113113 InputStreamReader sr = new InputStreamReader (st); // UTF-8
114114
115+ Ahora bien, tenga presente que la codificación del recurso, tanto si se
116+ trata de un archivo local o remoto, puede no coincidir con la del sistema.
117+
115118Al objeto resultado podemos tratarlo como prefiramos:
116119
117120.. code-block :: java
@@ -180,7 +183,8 @@ Escritura
180183---------
181184En este tipo de archivos, obviamente, tenemos que escribir texto, o sea,
182185cadenas, pero no directamente caracteres, sino bytes. Por lo demás, basta con
183- utilizar otro método de :java-nio: `Files <Files> ` para abrir un flujo de salida:
186+ utilizar otro método de :java-nio: `Files <Files> ` para abrir un flujo de
187+ salida (|OutputStream |):
184188
185189.. code-block :: java
186190
@@ -210,7 +214,7 @@ Por otro lado, para transformar la cadena en *bytes* es necesario especificar
210214la codificación usada (:java-lang: `StandardCharsets.UTF-8 <StandardCharsets> `),
211215aunque si no se indica se sobreentiende la predeterminada de la |JVM | (muy
212216probablemente UTF-8, que es lo habitual en los sistemas modernos). Una
213- alternativa, es utilizar un escritor de flujo:
217+ alternativa, es utilizar un escritor de flujo (| OutputStreamWriter |) :
214218
215219.. code-block :: java
216220
@@ -297,6 +301,11 @@ Para ilustrar cómo se serializan objetos definamos una clase muy simple:
297301 Persona otra = (Persona ) o;
298302 return edad == otra. edad && nombre. equals(otra. nombre);
299303 }
304+
305+ @Override
306+ public int hashCode () {
307+ return Objects . hash(nombre, edad);
308+ }
300309 }
301310
302311 Escritura
@@ -354,3 +363,9 @@ Para recuperar un objeto serializado, hay que hacer el proceso inverso. Para ilu
354363.. |XML | replace :: :abbr: `XML ( eXtensible Markup Language ) `
355364.. |URL | replace :: :abbr: `URL ( Uniform Resource Locator ) `
356365.. |JVM | replace :: :abbr: `JVM ( Java Virtual Machine ) `
366+
367+ .. |InputStream | replace :: :java-io: `InputStream <InputStream> `
368+ .. |InputStreamReader | replace :: :java-io: `InputStreamReader <InputStreamReader> `
369+ .. |BufferedReader | replace :: :java-io: `BufferedReader <BufferedReader> `
370+ .. |OutputStream | replace :: :java-io: `OutputStream <InputStream> `
371+ .. |OutputStreamWriter | replace :: :java-io: `OutputStreamWriter <OutputStreamWriter> `
0 commit comments