Caminhos independentes de plataforma em Java

Eu sei o caminho relativo de um arquivo e quero ser capaz de lidar com isso como um object File no Linux e no Windows.

Qual é a melhor maneira de especificar caminhos independentes de plataforma em Java?

A class File contém os seguintes membros públicos que você pode usar para caminhos de arquivos específicos da plataforma:

static String pathSeparator :
O caractere separador de caminho dependente do sistema, representado como uma string por conveniência.
static char pathSeparatorChar :
O caractere separador de caminho dependente do sistema.
static String separator :
O caractere separador de nome padrão dependente do sistema, representado como uma string por conveniência. static char separatorChar
O caractere separador de nome padrão dependente do sistema.

Apenas use / . Eu tenho usado por 20 anos. Nunca um problema.

Você pode usar qualquer separador de caminho em Java, ele funcionará no Unix e no Windows. Se você ainda quiser usar o separador de caminho do sistema, existe a propriedade File.separator que lhe dará a correta, dependendo do sistema atual .

Para a raiz, você pode usar listRoots() que fornece uma matriz de raiz, haverá apenas um elemento em sistemas Unix e quantos você tiver unidades no Windows.

Você pode usar o campo estático File.separator para recuperar o caractere separador específico da plataforma para caminhos de arquivo

Java é bem esperto sobre caminhos em objects File. Eu uso apenas algo como “../foo/bar” e funciona nessas duas plataformas, além do MacOSX.

O java 7 também suporta o uso de Paths aqui

O caminho é obtido chamando o método getPath do FileSystem padrão.

Você pode então obter um arquivo dele chamando:

 File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile(); 

Pessoalmente, eu gosto de usar a class Path do Eclipse para lidar com caminhos em geral, que você pode usar sozinho com poucas modificações, pois é bastante isolado.

http://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5/org.eclipse.equinox/common/3.5.0/org/eclipse/core/runtime/Path.java/?v = fonte