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?
java
platform-independent
Pacerier
fonte
fonte
Respostas:
System.getProperties()
pode ser substituído por chamadas paraSystem.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.fonte
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 tipojava.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.
fonte
java.io
depreciado em favor dejava.nio
?java.io
é um nível um pouco menor do quejava.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 substituiio
, estende-o de várias maneiras (e usa-oio
sob o capô).