Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jhonatanAsm en 14 Mayo 2012, 03:31 am



Título: cual es la mejor clase de java para trabajar con archivos
Publicado por: jhonatanAsm en 14 Mayo 2012, 03:31 am
gracias.


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: RyogiShiki en 14 Mayo 2012, 04:04 am
La clase que fue concebida para esta labor evidentemente es la clase File, a continuación te dejo la documentación correspondiente: http://docs.oracle.com/javase/7/docs/api/java/io/File.html

Y un recordatorio: tratar los filepaths como URIs, las razones de esto las explican bien en Java Puzzlers (http://www.javapuzzlers.com/)

Saludos



Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: adastra en 15 Mayo 2012, 00:24 am
java.io.File


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: jhonatanAsm en 16 Mayo 2012, 03:30 am
la clase File?, no lo creo, sino para que exiten clases como el FileReader, BufferedReader, etc, para manipular archivos.

aparentemente el paquete java.nio.* es de las mas potentes( inclusive que la clase RandomAccessFile ).

qué tan cierto es esto??gracias.salu2


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: adastra en 16 Mayo 2012, 09:42 am
La clase File es la base para trabajar con ficheros y directorios.
A preguntas abiertas, respuestas abiertas.


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: RyogiShiki en 16 Mayo 2012, 16:27 pm
la clase File?, no lo creo, sino para que exiten clases como el FileReader, BufferedReader, etc, para manipular archivos.

aparentemente el paquete java.nio.* es de las mas potentes( inclusive que la clase RandomAccessFile ).

qué tan cierto es esto??gracias.salu2

Lo que pasa es que estás confundiendo algunas cosas, cada clase que mencionas es muy diferente a la otra, y sirven para cosas y propósitos igualmente diferente. Vamos a ver:

java.io.File (http://docs.oracle.com/javase/7/docs/api/java/io/File.html)
Esta es la abstracción de un Archivo (File) y de los pathnames (Rutas y nombres). Así entonces podemos encontrar funcionalidades como isDirectory() (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()), isFile() (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isFile()), mkdir() (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#mkdir()), renameTo() (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo(java.io.File)), que nos permitirán realizar acciones sobre archivos y directorios como: crear, mover, obtener información de tamaños, nombres, rutas, testear si son directorios, archivos, ejecutables, si están escondidos, etc.

java.io.FileReader (http://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html)
Esta clase hereda de java.io.InputStreamReader (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html) y esta diseñada para leer archivos como streams de caracteres, lo que lo hace ideal para leer archivos en texto plano por ejemplo. lo que quiere decir en definitiva que lee caracteres y no bytes. En ella encontrarás métodos como read() (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#read()) o getEncoding() (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#getEncoding())

java.io.BufferedReader (http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html)
Esta clase al igual que la anterior lee a través de streams de caracteres, la gran diferencia con la anterior es que lo hace a través de buffers, lo que le da eficiencia. Un objeto de esta clase solo puede ser construido especificando un Reader. lo que quiere decir que por ejemplo se puede usar con un FileReader.

Ahora la manzana de la discordia tal vez si pueda ser un poco esta:

java.nio.*
Lo primero que hay que entender de java.nio.* es que no fue creada para reemplazar a java.io.*, fue creada para complementarla. Es por esta razón vamos a encontrar funcionalidades ampliadas, no así las mismas funcionalidades que ofrece java.io.*

java.nio.* fue concebida para ofrecer operaciones de bajo nivel en la manipulación de acciones I/O. Y tal vez su ventaja más grande y destacada es que estas operaciones son realizadas de forma asincrona (Asynchronous I/O) o No-bloqueante (Non-Blocking I/O) lo que quiere decir que mientras se hacen se realizan procesos de I/O el flujo del programa no se detiene (no se hacen llamadas bloqueantes: Blocking-calls). esto se logra de diferentes maneras y técnicas, si quieres saber más al respecto aquí (http://en.wikipedia.org/wiki/Non-blocking_I/O) encontrarás mucha más información. Y para más información acerca de java.nio aquí (http://en.wikipedia.org/wiki/New_I/O) encontrarás más información, ya que en este aspecto la información es muy amplia (uso de Channels, Buffers, Charsets, etc)

Espero haya quedado un poco más claro (aunque veo veo las explicaciones un poco toscas, igual en todas partes encontrarás links a la documentación oficial de Java SE 7 para ampliar y aclarar la info).

Saludos


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: jhonatanAsm en 16 Mayo 2012, 21:19 pm
Y un recordatorio: tratar los filepaths como URIs, las razones de esto las explican bien en Java Puzzlers (http://www.javapuzzlers.com/)

Saludos

lo dices porque URI es más seguro que URL??

******************************

La clase File es la base para trabajar con ficheros y directorios.
A preguntas abiertas, respuestas abiertas.

me refería a leer archivos, escribir,eliminar,etc.

***********************************
RyogiShiki cuando dices :
Citar
Lo primero que hay que entender de java.nio.* es que no fue creada para reemplazar a java.io.*, fue creada para complementarla. Es por esta razón vamos a encontrar funcionalidades ampliadas, no así las mismas funcionalidades que ofrece java.io.*

quieres decir que así esté usando java.nio.* , necesitaré importar java.io.*, para trabajar con archivos (realizo esta aclaración porque con java.io.* también sirve para trabajar con redes).

gracias manes.salu2


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: RyogiShiki en 16 Mayo 2012, 21:31 pm
Bueno, todo depende de las funcionalidades que necesites. Del proposito que tengas. Pero en general  las dos no son mutuamente incluyentes (excluyentes tampoco), si una clase te ofrece una funcionalidad que la otra no tiene pues la importas y la usas.

java.nio también puede trabajar con Sockets (http://tutorials.jenkov.com/java-nio/socket-channel.html), de hecho por su naturaleza asíncrona es ideal para escribir servidores por ejemplo, también es bastante util para reducir el uso y creación de Threads.

Y si, básicamente la clase URL es muy vieja y tiene algunos problemas de compatibilidades con pathnames locales y de comparación en la resolución de nombres. Por eso puede terminar en comportamientos extremadamente dificiles de depurar y corregir.

Saludos


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: jhonatanAsm en 17 Mayo 2012, 01:32 am
muchas gracias men.salu2


Título: Re: cual es la mejor clase de java para trabajar con archivos
Publicado por: RyogiShiki en 17 Mayo 2012, 04:10 am
De nada, espero haya sido de ayuda

Saludos