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?
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?
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.
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 que java.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.
java.io
obsolète en faveur de java.nio
?
java.io
est un peu plus bas que java.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 pas io
, il l'étend de multiples façons (et s'utilise io
sous le capot).