Parece que hay tres formas idénticas de obtener el "separador de archivos" dependiente de la plataforma de forma independiente:
¿Cómo decidimos cuándo usar cuál?
¿Hay alguna diferencia entre ellos?
Parece que hay tres formas idénticas de obtener el "separador de archivos" dependiente de la plataforma de forma independiente:
¿Cómo decidimos cuándo usar cuál?
¿Hay alguna diferencia entre ellos?
Respuestas:
System.getProperties()
puede ser anulado por llamadas a System.setProperty(String key, String value)
o con parámetros de línea de comando-Dfile.separator=/
File.separator
obtiene el separador para el sistema de archivos predeterminado.
FileSystems.getDefault()
te da el sistema de archivos predeterminado.
FileSystem.getSeparator()
le da el carácter separador para el sistema de archivos. Tenga en cuenta que, como método de instancia, puede usar esto para pasar diferentes sistemas de archivos a su código que no sea el predeterminado, en los casos en que necesite su código para operar en múltiples sistemas de archivos en una sola JVM.
FileSystem
instancia diferente para cada sistema de archivos con el que se ocupó.
Si su código no cruza los límites del sistema de archivos, es decir, solo está trabajando con un sistema de archivos, entonces úselo java.io.File.separator
.
Esto, como se explicó, le proporcionará el separador predeterminado para su FS. Como explicó Bringer128, System.getProperty("file.separator")
se puede anular a través de las opciones de línea de comandos y no es tan seguro como el tipo java.io.File.separator
.
El último, java.nio.file.FileSystems.getDefault().getSeparator();
se introdujo en Java 7, por lo que podría ignorarlo por ahora si desea que su código sea portátil en versiones anteriores de Java.
Entonces, cada una de estas opciones es casi la misma que otras, pero no del todo. Elija uno que se adapte a sus necesidades.
java.io
en desuso a favor de java.nio
?
java.io
es un nivel un poco más bajo java.nio
, pero sigue siendo muy y muy útil. Puedes ver las diferencias aquí: blogs.oracle.com/slc/entry/javanio_vs_javaio . nio
no reemplaza io
, lo extiende de múltiples maneras (y usa io
debajo del capó).