Dans la File
classe, il y a deux chaînes separator
et pathSeparator
.
Quelle est la différence? Quand devrais-je utiliser l'un sur l'autre?
Dans la File
classe, il y a deux chaînes separator
et pathSeparator
.
Quelle est la différence? Quand devrais-je utiliser l'un sur l'autre?
Réponses:
Si vous voulez dire File.separator
et File.pathSeparator
ensuite:
File.pathSeparator
est utilisé pour séparer les chemins de fichiers individuels dans une liste de chemins de fichiers. Considérez sous Windows, la variable d'environnement PATH. Vous utilisez un ;
pour séparer les chemins d'accès aux fichiers de sorte que Windows le File.pathSeparator
serait ;
.
File.separator
est soit /
ou \
qui est utilisé pour diviser le chemin vers un fichier spécifique. Par exemple sous Windows c'est \
ouC:\Documents\Test
File.separator
devrait être File.fileSeparator
relatif àFile.pathSeparator
File
. Je pense que la partie du fichier est implicite. Mais qui sait pourquoi ils ont fait beaucoup de ce qu'ils ont fait avec Java.
Vous utilisez le séparateur lorsque vous créez un chemin de fichier. Donc, sous Unix, le séparateur est /
. Donc, si vous vouliez construire le chemin Unix, /var/temp
vous le feriez comme ceci:
String path = File.separator + "var"+ File.separator + "temp"
Vous utilisez le pathSeparator
lorsque vous traitez une liste de fichiers comme dans un chemin de classe. Par exemple, si votre application a pris une liste de pots comme argument, la façon standard de formater cette liste sous Unix est:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Donc, étant donné une liste de fichiers, vous feriez quelque chose comme ceci:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
celui-ci, il est inutile de l'utiliser File.separator
car vous avez déjà du code dépendant de la plate-forme. Pourrait aussi bien coder en dur le chemin.
java.io.File
La classe contient quatre variables de séparateur statique. Pour une meilleure compréhension, comprenons à l'aide d'un code
Notez que toutes ces variables sont finales et dépendent du système.
Voici le programme java pour imprimer ces variables de séparation. 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);
}
}
Sortie du programme ci-dessus sur le système Unix:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Sortie du programme sur le système Windows:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Pour rendre notre plate-forme de programme indépendante, nous devons toujours utiliser ces séparateurs pour créer un chemin de fichier ou lire des variables système comme PATH, CLASSPATH.
Voici l'extrait de code montrant comment utiliser correctement les séparateurs.
//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
et char
retournés par les méthodes mentionnées ci-dessus renvoient la barre oblique inversée correctement formatée (si sous Windows).