Dans la classe File
, il existe deux chaînes, separator
et pathSeparator
.
Quelle est la différence? Quand devrais-je utiliser l'un sur l'autre?
Si vous voulez dire File.separator
et File.pathSeparator
alors:
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 de fichiers afin que Windows File.pathSeparator
soit ;
.
File.separator
est soit /
soit \
utilisé pour diviser le chemin d'accès à un fichier spécifique. Par exemple, sous Windows, il s'agit de \
ou C:\Documents\Test
Vous utilisez separator lorsque vous créez un chemin de fichier. Donc, dans unix, le séparateur est /
. Donc si vous voulez construire le chemin unix /var/temp
vous le feriez comme ceci:
String path = File.separator + "var"+ File.separator + "temp"
Vous utilisez pathSeparator
lorsque vous traitez avec une liste de fichiers comme dans un chemin de classe. Par exemple, si votre application utilise une liste de fichiers JAR comme argument, la méthode standard pour formater cette liste sous Unix est la suivante: /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);
Java.io.File
class contient quatre variables de séparateur statique. Pour une meilleure compréhension, comprenons à l'aide d'un code
Notez que toutes ces variables sont des variables 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 devrions toujours utiliser ces séparateurs pour créer un chemin de fichier ou lire des variables système telles que 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");