Pour les nouvelles applications écrites en Java 7, y a-t-il une raison d'utiliser un java.io.File
objet ou peut-on le considérer comme obsolète?
Je crois qu'un java.nio.file.Path
peut tout java.io.File
faire et plus encore.
Pour les nouvelles applications écrites en Java 7, y a-t-il une raison d'utiliser un java.io.File
objet ou peut-on le considérer comme obsolète?
Je crois qu'un java.nio.file.Path
peut tout java.io.File
faire et plus encore.
Longue histoire courte:
java.io.File
ne sera probablement jamais déconseillé / non pris en charge. Cela dit, java.nio.file.Path
fait partie de la java.nio.file
bibliothèque plus moderne , et fait tout ce qui est java.io.File
possible, mais généralement d'une meilleure manière, et plus encore.
Pour les nouveaux projets, utilisez Path
.
Et si jamais vous avez besoin d'un File
objet pour l'héritage, appelez simplement Path # toFile ()
Migration d'un fichier vers un chemin
Article de Janice J. Heiss et Sharon Zakhour, mai 2009, sur le système de fichiers NIO.2 dans JDK 7
File
place dePath
?Path
peut être plus facilement modifié pour "ajouter des enfants" avecresolve(...)
ou "monter d'un niveau" avecgetParent()
, etc. alorsFile
qu'il ne le peut pas. Essentiellement, une fois que vous avez terminé de modifier le chemin, vous le convertissez souventtoFile()
afin qu'il puisse être envoyé dans des méthodes héritées telles qu'unFileInputStream
constructeur.Non, vous ne pouvez pas le considérer comme obsolète à moins et jusqu'à ce qu'il soit marqué dans le
File
Javadoc.la source
java.io.File
n'est toujours ni supprimé ni même obsolète, et il n'y a toujours rien dans le Javadoc pour suggérer que l'une de ces choses se produira jamais.Consultez cet article pour plus d'informations - http://www.oracle.com/technetwork/articles/javase/nio-139333.html
Fondamentalement, file.Path sera la voie à suivre à partir de maintenant, mais comme tout le monde Java le sait, les gens ont tendance à conserver la rétrocompatibilité, donc je suppose que c'est pourquoi ils l'ont laissée.
la source
Je vais compléter la très bonne réponse de
@mmcrae
.Les classes JDK sont très rarement obsolètes.
Vous pouvez voir dans la liste des obsolètes de l'API JDK 8 toutes les classes obsolètes depuis le premier JDK.
Il ne contient qu'une petite partie des classes que la documentation Oracle et la communauté Java déconseillent d'utiliser.
java.util.Date
,java.util.Vector
,java.util.Hashtable
... qui sont des classes avec tant de défauts ne sont pas déconseillés.Mais pourquoi ?
Parce que conceptuellement quelque chose de
deprecated
signifie toujours là mais décourage de l'utiliser car il sera très certainement supprimé.Des milliers de programmes s'appuient sur ces classes mal conçues.
Pour de telles classes, les développeurs d'API Java ne donneront pas un tel signal.
La réponse
@EJP
est tellement juste:Donc, je pense que votre question aurait plus de sens dans ses termes:
"Comme nous avons le choix, devrions-nous utiliser
java.io.File
oujava.nio.file.Path
pour de nouveaux développements et si la réponse estjava.nio.file.Path
, pourriez-vous facilement profiter desjava.io.File
projets hérités en utilisantjava.io.File
?"Vous avez la réponse.
Ce tutoriel Oracle sur les IO hérités confirme votre réflexion.
Avec autant d'inconvénients pour
java.io.File
, nous n'avons vraiment besoin d'aucune raison d'utiliser cette classe pour de nouveaux développements.Et même pour l'utilisation de code hérité
java.io.File
, Oracle donne des conseils à utiliserPath
.la source
Oui, mais de nombreuses API existantes, y compris les propres API standard de Java7, ne fonctionnent toujours qu'avec le
File
type.la source
Java.io.File n'est pas obsolète. Oui java.nio.file.Path est mieux, mais tant qu'il y a encore beaucoup de programmes et de manuels utilisant Java.io.File, ne serait-ce que pour des raisons héritées, il ne doit pas être considéré comme obsolète, c'est trop important. Cela reviendrait simplement à jeter une clé dans les travaux sans aucun gain. Par exemple, le framework Android utilise File pour certaines de ses fonctionnalités de base de gestion de fichiers, et bien d'autres choses le font.
la source
Path
c'était mieux. Il a demandé s'ilFile
était déprécié.C'est un peu comme dire: "Napoléon doit-il envahir la Russie, ou ces choux de Bruxelles sont-ils vraiment savoureux?"
Quant à la deuxième partie de la question, vous pouvez en effet la considérer comme obsolète. Depuis janvier 2018, il n'est plus obsolète. Mais rien ne vous empêche de le considérer ainsi. Il est impossible de dire si cela vous procurera un avantage dans cette vie ou dans la suivante.
la source
File
. Dois-je, oui ou non?"File
toute façon. Ça ne va pas mourir de sitôt.it isn't deprecated. But there's nothing to stop you *considering* it so
LOL.