web-dev-qa-db-fra.com

File.separator vs FileSystem.getSeparator () vs System.getProperty ("file.separator")?

Il semble y avoir trois manières identiques d'obtenir le "séparateur de fichiers" dépendant de la plate-forme indépendamment de la plate-forme:

Comment décidons-nous quand utiliser lequel?

Y a-t-il même une différence entre eux?

122
Pacerier

System.getProperties() peut être remplacé par des appels à System.setProperty(String key, String value) ou à l'aide de paramètres de ligne de commande -Dfile.separator=/

File.separator obtient le séparateur du système de fichiers par défaut.

FileSystems.getDefault() vous donne le système de fichiers par défaut.

FileSystem.getSeparator() vous donne le caractère séparateur du système de fichiers. Notez qu'en tant que méthode d'instance, vous pouvez utiliser cette méthode pour transmettre différents systèmes de fichiers à votre code, à l'exception du système par défaut, dans les cas où votre code doit fonctionner sur plusieurs systèmes de fichiers de la même machine virtuelle.

130
Bringer128

Si votre code ne dépasse pas les limites du système de fichiers, c'est-à-dire que vous travaillez uniquement avec un système de fichiers, utilisez Java.io.File.separator.

Comme expliqué, cela vous donnera le séparateur par défaut pour votre système de stockage. Comme Bringer128 l'a expliqué, System.getProperty("file.separator") peut être remplacé via des options de ligne de commande et n'est pas aussi sûr que le type Java.io.File.separator.

Le dernier, Java.nio.file.FileSystems.getDefault().getSeparator(); a été introduit dans Java 7, vous pouvez donc également l'ignorer si vous voulez que votre code soit portable avec les anciennes versions de Java.

Donc, chacune de ces options est presque la même que les autres, mais pas tout à fait. Choisissez celui qui convient à vos besoins.

29
darioo