Na File
classe há duas strings, separator
e pathSeparator
.
Qual é a diferença? Quando devo usar um sobre o outro?
Na File
classe há duas strings, separator
e pathSeparator
.
Qual é a diferença? Quando devo usar um sobre o outro?
Respostas:
Se você quer dizer File.separator
e File.pathSeparator
depois:
File.pathSeparator
é usado para separar caminhos de arquivo individuais em uma lista de caminhos de arquivo. Considere no Windows a variável de ambiente PATH. Você usa a ;
para separar os caminhos dos arquivos, como File.pathSeparator
seria o Windows ;
.
File.separator
é um /
ou \
é usado para dividir o caminho para um arquivo específico. Por exemplo, no Windows, é \
ouC:\Documents\Test
File.separator
deve ser File.fileSeparator
em relação aFile.pathSeparator
File
. Eu acho que a parte do arquivo está implícita. Mas quem sabe por que eles fizeram muito do que fizeram com Java.
Você usa o separador ao criar um caminho de arquivo. Então, no unix, o separador é /
. Então, se você quisesse construir o caminho unix /var/temp
, faria assim:
String path = File.separator + "var"+ File.separator + "temp"
Você usa pathSeparator
quando está lidando com uma lista de arquivos como em um caminho de classe. Por exemplo, se seu aplicativo tomou 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);
/var/temp
esse, é inútil usá- File.separator
lo, pois você já possui código dependente da plataforma. Também pode codificar o caminho.
java.io.File
A classe contém quatro variáveis separadoras estáticas. Para uma melhor compreensão, vamos entender com a ajuda de algum código
Observe que todas essas são variáveis finais e dependem do sistema.
Aqui está o programa java para imprimir essas variáveis 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, sempre devemos usar esses separadores para criar o caminho do arquivo ou ler quaisquer variáveis do sistema como PATH, CLASSPATH.
Aqui está o trecho de código que mostra como usar os 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");
String
e char
retornados pelos métodos mencionados acima retornam a barra invertida corretamente formatada (se estiver no Windows).