Para nuevas aplicaciones escritas en Java 7, ¿hay alguna razón para usar un java.io.Fileobjeto más o podemos considerarlo obsoleto?
Creo que un java.nio.file.Pathpuede hacer todo lo que java.io.Filepuede hacer y más.
Para nuevas aplicaciones escritas en Java 7, ¿hay alguna razón para usar un java.io.Fileobjeto más o podemos considerarlo obsoleto?
Creo que un java.nio.file.Pathpuede hacer todo lo que java.io.Filepuede hacer y más.
Larga historia corta:
java.io.FileLo más probable es que nunca sea desaprobado / no admitido. Dicho esto, java.nio.file.Pathes parte de la java.nio.filelib más moderna y hace todojava.io.File puede, pero en general de una mejor manera y más.
Para nuevos proyectos, use Path.
Y si alguna vez necesita un Fileobjeto para el legado, simplemente llame a Path # toFile ()
Migrar de archivo a ruta
Filelugar dePath?Pathpuede modificarse más fácilmente para "agregar hijos" conresolve(...)o "subir un nivel" congetParent(), etc., mientrasFileque no puede. Esencialmente, una vez que haya terminado de modificar la ruta, a menudo la convertirátoFile()para que pueda enviarse a métodos heredados, como unFileInputStreamconstructor.No, no puede considerarlo en desuso a menos que esté marcado en el
FileJavadoc.fuente
java.io.Fileaún no se elimina ni se desaproba, y todavía no hay nada en el Javadoc que sugiera que alguna de estas cosas sucederá alguna vez.Mira este artículo sobre más información - http://www.oracle.com/technetwork/articles/javase/nio-139333.html
Básicamente, file.Path será el camino a seguir a partir de ahora, pero como es ampliamente conocido, las personas de Java tienden a mantener la compatibilidad con versiones anteriores, así que supongo que es por eso que lo han dejado.
fuente
Completaré la muy buena respuesta de
@mmcrae.Las clases de JDK rara vez son obsoletas.
Puede ver en la lista JDK 8 API obsoletos todas las clases en desuso desde el primer JDK.
Contiene solo una pequeña parte de las clases que la documentación de Oracle y la comunidad Java desaconsejan usar.
java.util.Date,java.util.Vector,java.util.Hashtable... que son clases con tantos defectos no están en desuso.Pero por qué ?
Porque conceptualmente
deprecatedtodavía hay algo de medios pero desalienta su uso, ya que seguramente será eliminado.Miles de programas confían en estas clases mal diseñadas.
Para tales clases, los desarrolladores de API de Java no darán tal señal.
La respuesta de
@EJPes realmente correcta:Por lo tanto, creo que su pregunta tendría más sentido en sus términos:
"A medida que tengamos la opción, deberíamos usarla
java.io.Fileojava.nio.file.Pathpara nuevos desarrollos y, si la respuesta esjava.nio.file.Path, ¿podría aprovechar fácilmentejava.io.Filelos proyectos heredados que utilizanjava.io.File?"Tienes la respuesta
Este tutorial de Oracle sobre IO heredado confirma su pensamiento.
Con tantos inconvenientes
java.io.File, realmente no necesitamos ninguna razón para usar esta clase para nuevos desarrollos.E incluso para el uso de código heredado
java.io.File, Oracle da pistas para usarPath.fuente
Sí, pero muchas API existentes, incluidas las API estándar propias de Java7, todavía funcionan solo con el
Filetipo.fuente
Java.io.File no está en desuso. Sí, java.nio.file.Path es mejor, pero mientras existan muchos programas y libros de texto que utilicen Java.io.File, aunque solo sea por motivos heredados, no debe considerarse obsoleto, es demasiado importante. Hacerlo sería simplemente lanzar una llave inglesa en las obras sin ganancia total. Por ejemplo, el marco de Android usa File para algunas de sus funciones básicas de manejo de archivos, y muchas otras cosas lo hacen.
fuente
Pathera mejor. Preguntó siFileestaba en desuso.Esto es un poco como decir: "si Napoleón invadiera Rusia, o estas coles de Bruselas son realmente sabrosas?"
En cuanto a la segunda parte de la pregunta, puedes considerarla obsoleta. A partir de enero de 2018, no está en desuso. Pero no hay nada que te impida considerarlo así. Es imposible decir si eso le proporcionará alguna ventaja en esta vida o en la próxima.
fuente
File. ¿Debo, sí o no?"Filetodos modos. No va a morir en el corto plazo.it isn't deprecated. But there's nothing to stop you *considering* it soJajaja