Listar un directorio con Java IO

11/Jul/2007 Java , , , 13 Comentarios

Mediante la librería Java IO vamos a listar el contenido de un directorio con el fin de mostrarlo por pantalla. Para ello, lo primero que haremos será obtener una referencia al directorio que queremos listar. Utilizaremos, en este caso, la clase File para almacenar la referencia.

  1. File dir = new File("c:\winnt");

Uno de los métodos de la clase File es .list(). Mediante este método recuperaremos los ficheros que componen el directorio especificado. Lo que nos devuelve es un array de cadenas.

  1. String[] ficheros = dir.list();

Hay que tener cuidado con este método. Porque si el resultado de la invocación al método no devuelve resultados, deja a la variable sin instanciar y por consiguiente con un valor de null. Y claro que nadie quiere que le de un NullPointerException. A si que meteremos una validación antes de acceder a la variable.

Si nos ha devuelto resultados, solo nos quedará recorrer el array para sacar sus datos por pantalla.

  1. if (ficheros == null)
  2. System.out.println("No hay ficheros en el directorio especificado");
  3. else {
  4. for (int x=0;x<ficheros.length;x++)
  5. System.out.println(ficheros[x]);
  6. }

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

13 comentarios en “Listar un directorio con Java IO”

Víctor Cuervo

Antebraso

Joigan no mas quiero comentar porque me aburro en casa y no tengo hamijos. Nomas les quito tiempo nomas digo tonterias

Víctor Cuervo

Cristóbal Mujica

Y PARA LISTAR UN DIRECTORIO DE UN SITIO REMOTO??

Víctor Cuervo

Albert Soft

Si sólo quieres los ficheros .DOC puedes filtrar la salida antes de imprimir el archivo ver si tiene extensión doc, o fijar un filtro para la extensión que te interese.

Víctor Cuervo

cyber

Oie y si yo kiero saber solo los documentos que aii dentro de la carpeta y subcarptas dentro como puedo aserle??

Víctor Cuervo

Cristy Ruiz

Hola!
Ya probé este método y si me funcionó, la problematica que tengo esque quiero hacer uso del método listFiles(), para poder crear un arreglo de objetos File y poder verificar cuando fueron modificados o si son archivos o directorios. Esta es una práctica que me encargaron hacer, curso la carrera de Ing en Sistemas Computacionales y voy en 4to semestre.
Estoy usando el Ready to Program y tengo el JDK1.5.0, no sé porqué no me corre… ojalá y alguien pueda explicarme que pasa o que puede estar afectando mi compilador. El error que me marca ees que el metodo listFiles() no se encuentra en java/io/file

PD. La sintaxis está bien…

Víctor Cuervo

rami

pueden usar System.getProperty(“file.separator”) para obtener el separador de archivos del sistema que están usando, para más info consulten el javadoc de System, pueden averiguar bastantes cosas del entorno sobre el cual están corriendo su programa.

Víctor Cuervo

KRGkill

por dios como escriben aqui solo por comentar y no decir nada util…

Víctor Cuervo

Xao

“No ley el post pero supongo que es bueno”. Perdona que te repita, era para comentar tambien 😉

Víctor Cuervo

toledo

cual es el codigo en java para poder dibujar diagonales en una aplicacion de colores
por favor se los agradeceria muchisimo

Víctor Cuervo

silvia

Existe alguna manera de listar directorios y ficheros como se muestra aqui pero recursivamente?

Víctor Cuervo

berthely

No lei el post pero supongo que es bueno, noamas queria comentar :p. Saludos a todos.

Víctor Cuervo

Darko Demon

Deves de tener cuidado con la diagonal, en windows se usa la invertida “\”, pero en java este es la indicacion de un metodo de escape, por lo tanto deves escribirlo como metodo de escape para diagonal invertida “\\”; ejemplo:

new File(“c:\\windows\\dir\\etc”);

Pero en los sistemas vasados en UNIX (como linux, y en sus diferentes distribuciones como ubuntu, fedora, suse, debian, etc) no se usa diagonal invertida, sino la normal “/”, por lo tanto se cabia la sintaxis de acceso asi:

new File(“/etc/profile/dir”);

Que mal que no se hayan puesto de acuerdo para el acceso a archivos, pero nimodo, algunas veces por este simple detalle, he tenido que compilar 2 distribuciones de mis programas, una para sistemas UNIX y otras para sistemas win32, espero esto te ayude, Kacike, si te las ingenias, podrias hacer un detector de SO, y aser que en las cadenas donde pones la direccion de los diorectorios, cambie segun donde se ejecute la maquina virtual de java.

Saludos

Víctor Cuervo

Kacike

Sobre windows funciona perfectamente, sin embargo sobre linux si los ficheros tienen nombres con carácteres especiales no aparecerían correctamente, sino simbolos ? en vez de por ejemplo áéíóú etc.

¿Alguna forma de solucionarlo?

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*