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?
java
platform-independent
Pacerier
fuente
fuente
Respuestas:
System.getProperties()
puede ser anulado por llamadas aSystem.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.fuente
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 tipojava.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.
fuente
java.io
en desuso a favor dejava.nio
?java.io
es un nivel un poco más bajojava.nio
, pero sigue siendo muy y muy útil. Puedes ver las diferencias aquí: blogs.oracle.com/slc/entry/javanio_vs_javaio .nio
no reemplazaio
, lo extiende de múltiples maneras (y usaio
debajo del capó).