Fichier.séparateur ou fichier.pathSeparator
Dans le 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?
3 answers
Si vous voulez dire File.separator
et File.pathSeparator
, alors:
File.pathSeparator
est utilisé pour séparer des chemins de fichier dans une liste de chemins d'accès aux fichiers. Considérez sous Windows, la variable d'environnement PATH. Vous utilisez un;
pour séparer les chemins de fichiers, donc sur WindowsFile.pathSeparator
serait;
.File.separator
est soit/
ou\
, ce qui est utilisé pour séparer le chemin d'accès à un fichier spécifique. Par exemple, sur Windows, il est\
ouC:\Documents\Test
Vous utilisez separator lorsque vous créez un chemin de fichier. Donc, dans 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 pathSeparator
lorsque vous traitez avec une liste de fichiers comme dans un chemin de classe. Par exemple, si votre application a pris une liste de fichiers jar 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 que vous feriez quelque chose comme ceci:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
java.io.File
la classe contient quatre variables de séparation statiques. Pour une meilleure compréhension, comprenons à l'aide d'un code
- séparateur: Nom par défaut dépendant de la plate-forme-caractère séparateur sous forme de chaîne. Pour windows, c'est ‘\’ et pour unix c'est ‘/’
- separatorChar: Identique à separator mais c'est char
- pathSeparator: Variable dépendante de la plate-forme pour le séparateur de chemin. Pour exemple de variable PATH ou CLASSPATH liste de chemins séparés par‘: 'dans Systèmes Unix et'; ' dans Système Windows
- pathSeparatorChar: Identique à pathSeparator mais c'est char
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 toutes les variables système comme PATH, CLASSPATH.
Voici l'extrait de code montrant comment utiliser les séparateurs correctement.
//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");