java.io.Fichier vs java.nio.Fichiers quel est le préféré dans le nouveau code?


Tout en écrivant des réponses autour de SO, un utilisateur a essayé de souligner que java.io.Filene devrait pas être utilisé dans un nouveau code, mais il soutient que le new object java.nio.Filesdevrait être utilisé à la place; il a lié à cet article.

Maintenant, je développe en Java depuis plusieurs années maintenant, et je n'ai pas entendu cet argument auparavant; depuis la lecture de son post, j'ai cherché, et je n'ai pas trouvé beaucoup d'autres sources qui le confirment, et personnellement, je me sens comme beaucoup de les points argumentés dans l'article sont faibles et que si vous savez les lire, les erreurs lancées par la classe File vous diront généralement exactement quel est le problème.

Comme je développe continuellement un nouveau code, ma question est la suivante:

Est-ce un argument actif dans la communauté Java? Est Fichiers préféré sur Fichier pour le nouveau code? Quels sont les principaux avantages / inconvénients entre les deux?

Author: hippietrail, 2015-08-21

3 answers

La documentation que vous avez liée donne la réponse:

Le java.nio.fichier de package définit les interfaces et les classes Java machine virtuelle pour accéder aux fichiers, aux attributs de fichiers et aux systèmes de fichiers. Cette API peut être utilisée pour surmonter de nombreuses limitations de la classe java. io. File. La méthode toPath peut être utilisée pour obtenir un chemin qui utilise le chemin abstrait représenté par un objet Fichier pour localiser un fichier. Le chemin résultant peut être utilisé avec la classe Files pour fournir accès plus efficace et étendu aux opérations de fichiers supplémentaires, attributs de fichier et exceptions d'E / S pour aider à diagnostiquer les erreurs opération sur un fichier échoue.

 21
Author: Jens, 2015-08-21 15:05:04

File a une implémentation plus récente: Path. Avec un constructeur Paths.get("..."). Et Files a de nombreuses fonctions utilitaires intéressantes avec de meilleures implémentations aussi (move au lieu du File.renameTo parfois défaillant).

Un Path maintient son système de fichiers. Par conséquent, vous pouvez copier à partir d'un système de fichiers zip ("jar:file:..... .zip") un chemin vers un autre système de fichiers et vice versa.

File.toPath() peut aider à une transition incrémentale.

Les utilitaires seuls dans Files font un mouvement vers les classes plus récentes rentable.

 13
Author: Joop Eggen, 2015-08-21 15:21:09

Je dirais que ni l'un ni l'autre n'est "préféré". Au lieu de cela, je vous recommande de regarder la fonctionnalité dont votre application a besoin et d'utiliser laquelle des java.io.File ou java.nio.Files répond le mieux aux exigences.

La réponse est susceptible d'être soit un match nul, soit java.nio.Files est mieux. Mais c'est à vous ou à votre équipe de décider, pas à un autre programmeur sur SO.


Est-ce un argument actif dans la communauté Java?

Il y a des gens qui vont discuter de n'importe quoi. Mais je dirais que la communauté (en général) a des préoccupations plus importantes.

 8
Author: Stephen C, 2018-04-30 12:25:50