Parece haver três maneiras idênticas de obter o "separador de arquivos" dependente da plataforma, independentemente da plataforma:
Como decidimos quando usar qual?
Existe alguma diferença entre eles?
Parece haver três maneiras idênticas de obter o "separador de arquivos" dependente da plataforma, independentemente da plataforma:
Como decidimos quando usar qual?
Existe alguma diferença entre eles?
Respostas:
System.getProperties()
pode ser substituído por chamadas para System.setProperty(String key, String value)
ou com parâmetros de linha de comando-Dfile.separator=/
File.separator
obtém o separador para o sistema de arquivos padrão.
FileSystems.getDefault()
fornece o sistema de arquivos padrão.
FileSystem.getSeparator()
fornece o caractere separador para o sistema de arquivos. Observe que, como método de instância, você pode usá-lo para passar sistemas de arquivos diferentes para o seu código, exceto o padrão, nos casos em que você precisa que seu código opere em vários sistemas de arquivos na JVM.
FileSystem
instância diferente para cada sistema de arquivos com o qual lidou.
Se o seu código não ultrapassar os limites do sistema de arquivos, ou seja, você está apenas trabalhando com um sistema de arquivos, use java.io.File.separator
.
Como explicado, você obterá o separador padrão para o seu FS. Como Bringer128 explicou, System.getProperty("file.separator")
pode ser substituído por opções de linha de comando e não é tão seguro quanto o tipo java.io.File.separator
.
O último java.nio.file.FileSystems.getDefault().getSeparator();
foi introduzido no Java 7, portanto, você pode ignorá-lo por enquanto, se quiser que seu código seja portátil nas versões mais antigas do Java.
Portanto, todas essas opções são quase as mesmas que as outras, mas não exatamente. Escolha um que atenda às suas necessidades.
java.io
depreciado em favor de java.nio
?
java.io
é um nível um pouco menor do que java.nio
, mas ainda é muito e amplamente útil. Você pode ver as diferenças aqui: blogs.oracle.com/slc/entry/javanio_vs_javaio . nio
não substitui io
, estende-o de várias maneiras (e usa-o io
sob o capô).