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?

Author: Kasun Siyambalapitiya, 2011-05-12

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 Windows File.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 \ ou C:\Documents\Test

 569
Author: user489041, 2013-08-26 12:24:21

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);
 94
Author: Karthik Ramachandran, 2012-09-27 20:12:54

java.io.File la classe contient quatre variables de séparation statiques. Pour une meilleure compréhension, comprenons à l'aide d'un code

  1. 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 ‘/’
  2. separatorChar: Identique à separator mais c'est char
  3. 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
  4. 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");
 76
Author: foxt7ot, 2018-02-23 22:00:35