jump to navigation

Listar un directorio con Java IO Julio 11, 2007

Publicado por lineadecodigo en : Java , trackback

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

Articulos Similares:

Enviar entrada por email Enviar entrada por email | Imprimir Imprimir | 19601 visitas

1 Star2 Stars3 Stars4 Stars5 Stars (Todavia sin evaluar)
Loading ... Loading ...

Comentarios»

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??

11. Albert Soft - Enero 31, 2010

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.

12. Cristóbal Mujica - Julio 30, 2010

Y PARA LISTAR UN DIRECTORIO DE UN SITIO REMOTO??


Imagen CAPTCHA CAPTCHA Audio
Refrescar imagen