Il semble y avoir trois façons 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?
java
platform-independent
Pacerier
la source
la source
Réponses:
System.getProperties()
peut être remplacé par des appels àSystem.setProperty(String key, String value)
ou avec des 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 de séparation du système de fichiers. Notez qu'en tant que méthode d'instance, vous pouvez l'utiliser pour transmettre différents systèmes de fichiers à votre code autre que celui par défaut, dans les cas où vous avez besoin de votre code pour fonctionner sur plusieurs systèmes de fichiers dans la même JVM.la source
FileSystem
instance différente pour chaque système de fichiers que vous avez traité.Si votre code ne traverse pas les limites du système de fichiers, c'est-à-dire que vous ne travaillez qu'avec un seul système de fichiers, utilisez
java.io.File.separator
.Cela vous donnera, comme expliqué, le séparateur par défaut pour votre FS. Comme Bringer128 l'a expliqué,
System.getProperty("file.separator")
peut être remplacé via les options de ligne de commande et n'est pas aussi sûr de type quejava.io.File.separator
.Le dernier, a
java.nio.file.FileSystems.getDefault().getSeparator();
été introduit dans Java 7, vous pouvez donc l'ignorer pour l'instant si vous souhaitez que votre code soit portable dans les anciennes versions de Java.Ainsi, chacune de ces options est presque la même que les autres, mais pas tout à fait. Choisissez celui qui correspond à vos besoins.
la source
java.io
obsolète en faveur dejava.nio
?java.io
est un peu plus bas quejava.nio
, mais toujours très et largement utile. Vous pouvez voir les différences ici: blogs.oracle.com/slc/entry/javanio_vs_javaio .nio
ne le remplace pasio
, il l'étend de multiples façons (et s'utiliseio
sous le capot).