Dans la Fileclasse, il y a deux chaînes separatoret pathSeparator.
Quelle est la différence? Quand devrais-je utiliser l'un sur l'autre?
Dans la Fileclasse, il y a deux chaînes separatoret pathSeparator.
Quelle est la différence? Quand devrais-je utiliser l'un sur l'autre?
Réponses:
Si vous voulez dire File.separatoret File.pathSeparatorensuite:
File.pathSeparatorest 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.pathSeparatorserait ;.
File.separatorest soit /ou \qui est utilisé pour diviser le chemin vers un fichier spécifique. Par exemple sous Windows c'est \ouC:\Documents\Test
File.separatordevrait être File.fileSeparatorrelatif à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/tempvous le feriez comme ceci:
String path = File.separator + "var"+ File.separator + "temp"
Vous utilisez le pathSeparatorlorsque 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/tempcelui-ci, il est inutile de l'utiliser File.separatorcar vous avez déjà du code dépendant de la plate-forme. Pourrait aussi bien coder en dur le chemin.
java.io.FileLa 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");
Stringet charretournés par les méthodes mentionnées ci-dessus renvoient la barre oblique inversée correctement formatée (si sous Windows).