File.separator ou File.pathSeparator

Na class File existem duas strings, separator e pathSeparator .

Qual é a diferença? Quando devo usar um sobre o outro?

Se você quer dizer File.separator e File.pathSeparator então:

  • File.pathSeparator é usado para separar caminhos de arquivos individuais em uma lista de caminhos de arquivos. Considere no windows, a variável de ambiente PATH. Você usa um ; para separar os caminhos de arquivo assim no Windows File.pathSeparator seria ; .

  • File.separator é / ou \ que é usado para dividir o caminho para um arquivo específico. Por exemplo, no Windows, é \ ou C:\Documents\Test

Você usa o separador quando está construindo um caminho de arquivo. Então no unix o separador é / . Então, se você quisesse construir o caminho unix /var/temp , faria da seguinte forma:

 String path = File.separator + "var"+ File.separator + "temp" 

Você usa o pathSeparator quando está lidando com uma lista de arquivos como em um caminho de class. Por exemplo, se seu aplicativo tiver uma lista de jars como argumento, a maneira padrão de formatar essa lista no unix é: /path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar

Então, dada uma lista de arquivos, você faria algo assim:

 String listOfFiles = ... String[] filePaths = listOfFiles.split(File.pathSeparator); 

java.io.File class java.io.File contém quatro variables ​​separadoras estáticas. Para melhor compreensão, vamos entender com a ajuda de algum código

  1. separador: Caractere separador de nome padrão dependente da plataforma como String. Para windows, é ‘\’ e para unix é ‘/’
  2. separatorChar: O mesmo que separador, mas é característico
  3. pathSeparator: Variável dependente de plataforma para o separador de caminho. Por exemplo, lista de caminhos PATH ou CLASSPATH de caminhos separados por ‘:’ em sistemas Unix e ‘;’ no sistema Windows
  4. pathSeparatorChar: O mesmo que pathSeparator mas é char

Note que todas estas são variables ​​finais e dependentes do sistema.

Aqui está o programa java para imprimir essas variables ​​separadoras. FileSeparator.java

 import java.io.File; public class FileSeparator { public static void main(String[] args) { System.out.println("File.separator = "+File.separator); System.out.println("File.separatorChar = "+File.separatorChar); System.out.println("File.pathSeparator = "+File.pathSeparator); System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar); } } 

Saída do programa acima no sistema Unix:

 File.separator = / File.separatorChar = / File.pathSeparator = : File.pathSeparatorChar = : 

Saída do programa no sistema Windows:

 File.separator = \ File.separatorChar = \ File.pathSeparator = ; File.pathSeparatorChar = ; 

Para tornar nossa plataforma de programa independente, devemos sempre usar esses separadores para criar o caminho do arquivo ou ler quaisquer variables ​​do sistema, como PATH, CLASSPATH.

Aqui está o trecho de código mostrando como usar separadores corretamente.

 //no platform independence, good for Unix systems File fileUnsafe = new File("tmp/abc.txt"); //platform independent and safe to use across Unix and Windows File fileSafe = new File("tmp"+File.separator+"abc.txt");