feed twitter facebook LinkedIn facebook

Java » Listar un directorio con Java IO

Julio 11, 2007 por Víctor Cuervo . 25672 visitas 13 Comentarios Imprimir Imprimir

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.

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.

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.

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

Visualizar el ejemplo | Descargar el código

tags: , , ,

Artículos relacionados:

13 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

1 2
  1. Kacike
    Septiembre 17, 2007 #

    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?

  2. Darko Demon
    Junio 29, 2008 #

    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

  3. berthely
    Julio 25, 2008 #

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

  4. silvia
    Agosto 21, 2008 #

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

  5. toledo
    Septiembre 28, 2008 #

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

  6. Xao
    Noviembre 28, 2008 #

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

  7. KRGkill
    Diciembre 22, 2008 #

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

  8. rami
    Enero 16, 2009 #

    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.

  9. Cristy Ruiz
    Enero 31, 2009 #

    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…

  10. cyber
    Diciembre 4, 2009 #

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

1 2

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*