@@ -48,14 +48,15 @@ Para acceder a las variables de entorno, *Java* dispone del método estático\
4848 Map<String , String > entorno = System . getenv();
4949 entorno. get(" HOME" ); // /home/usuario, de nuevo.
5050
51- El **problema ** crucial de consultar las variables de entorno es el de que el
52- nombre cambia entre los distintos sistemas operativos\ [# ]_ y, por tanto, si nos
53- limitamos a usarlas tal como acabamos de ver, nuestra aplicación será
54- dependiente del sistema en que se ejecute.
51+ El **problema ** de consultar variables de entorno es que su existencia y sus
52+ nombres dependen del sistema operativo\ [# ]_, por lo que, si nos limitamos a
53+ usarlas como acabamos de ver, la aplicación será dependiente del
54+ sistema sobre el que se ejecute e incumpliremos nuestro propósito de
55+ independizar la aplicación de la plataforma.
5556
5657.. _system-properties :
5758
58- Una alternativa es consultar las propiedades de nuestro entorno de *Java *,
59+ Una * alternativa * es consultar las propiedades de nuestro entorno de *Java *,
5960algunas de las cuales recogen los valores de las variables de entorno:
6061
6162``System.getProperty(String nombre_propiedad) ``
@@ -240,6 +241,18 @@ podemos hacer construcciones como esta:
240241 .. attention :: Con estas herramientas sólo construimos rutas, así que tales rutas
241242 no tienen por qué existir.
242243
244+ .. admonition :: Conclusión
245+
246+ Debemos siempre independizar el código de la plataforma subyacente para lo
247+ cual debemos:
248+
249+ a. Construir las rutas con las herramientas proporcionadas por *Java *.
250+ #. Intentar utilizar las :ref: `propiedades del sistema
251+ <system-properties>` para resolver las particularidades.
252+ #. En caso de no que no baste con ellas será necesario obtener la plataforma\
253+ [# ]_ y crear código condicional que implemente la solución dependiendo
254+ cuál sea.
255+
243256.. _file.files :
244257
245258Gestión
@@ -321,10 +334,10 @@ dentro de él. Los dos últimos argumentos son opcionales.
321334
322335Manipulación
323336------------
324- Por manipulación entendemos, simplemente, la copia y traslado de archivos o el
325- cambio de sus propiedades (permisos, propietarios, etc) y no la alteración del
326- contenido, que reservamos para el :ref: `próximo epígrafe sobre manipulación
327- <manipulacion-archivos>`.
337+ Por :dfn: ` manipulación ` entendemos, simplemente, la copia y traslado de archivos
338+ o el cambio de sus propiedades (permisos, propietarios, etc) y no la alteración
339+ del contenido, que reservamos para el :ref: `próximo epígrafe sobre manipulación
340+ de contenidos <manipulacion-archivos>`.
328341
329342Para **crear ** un archivo:
330343
@@ -333,7 +346,7 @@ Para **crear** un archivo:
333346 Files . createFile(home. resolve(" caca.txt" ));
334347
335348 lo que creará el archivo vacío :file: `caca.txt ` dentro de nuestro directorio
336- natural con los permisos que determine la máscara del sistema. Podríamos haber
349+ personal con los permisos que determine la máscara del sistema. Podríamos haber
337350definido otros permisos, pero para ello tendríamos que haber incluido argumentos
338351adicionales (véase :java-nio: `FileAttribute <attribute/FileAttribute> `), pero no
339352entraremos en tanto detalle. También existe ``Files.createDirectory(Path dir) ``
@@ -345,9 +358,9 @@ Podemos también copiar, mover o borrar archivos:
345358
346359 Path tmp = Path . of(System . getProperty(" java.io.tmpdir" ));
347360 Path caca = home. resolve(" caca.txt" );
348- Files . copy(caca, tmp. resolve(" caca .txt" )); // Copia en /tmp/kk.txt
349- Files . move(caca, tmp. resolve(" caca .txt" )); // Error, el destino ya existe.
350- Files . move(caca, tmp. resolve(" caca .txt" ), StandardCopyOption . REPLACE_EXISTING );
361+ Files . copy(caca, tmp. resolve(" kk .txt" )); // Copia en /tmp/kk.txt
362+ Files . move(caca, tmp. resolve(" kk .txt" )); // Error, el destino ya existe.
363+ Files . move(caca, tmp. resolve(" kk .txt" ), StandardCopyOption . REPLACE_EXISTING );
351364 Files . delete(caca);
352365
353366 .. tip :: También se pueden copiar flujos (:java-io:`InputStream <InputStream>`)
@@ -360,7 +373,8 @@ contenido, pero los dejamos para el siguiente epígrafe.
360373
361374.. caution :: A diferencia de lo que ocurre al usar en una terminal las órdenes
362375 :ref: `cp <linux:cp >` o :ref: `mv <linux:mv >`, no basta con poner el directorio
363- de destino, cuando queremos conservar el nombre original.
376+ de destino, aunque queramos conservar el nombre original: siempre debe
377+ escribirse la ruta completa, incluido el nombre del archivo de destino.
364378
365379.. warning :: Por supuesto, estas acciones pueden generar excepciones (p.ej. al
366380 intentar crear un archivo dentro de un directorio en el que no tenemos
@@ -377,6 +391,9 @@ contenido, pero los dejamos para el siguiente epígrafe.
377391
378392 System . getenv(" HomeDrive" ) + System . getenv(" HomePath" );
379393
394+ .. [# ] Por ejemplo, ``System.getProperty("os.name") `` devuelve el nombre del
395+ sistema operativo.
396+
380397 .. |API | replace :: :abbr: `API ( Application Programming Interface ) `
381398.. |MIME | replace :: :abbr: `MIME ( Multipurpose Internet Mail Extensions ) `
382399.. |URI | replace :: :abbr: `URI ( Uniform Resource Identifier ) `
0 commit comments