Listar un directorio con Java IO Julio 11, 2007
Publicado por lineadecodigo en : Java , trackbackMediante 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:
- Listar un directorio con Java
- Listar un directorio de forma recursiva en Java
- Borrar un directorio con Java
- Renombrar un fichero con Java IO
- Saber si una ruta es un directorio con Java
Enviar entrada por email
|
Imprimir
| 19095 visitas





Comentarios»
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?
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
No lei el post pero supongo que es bueno, noamas queria comentar :p. Saludos a todos.
Existe alguna manera de listar directorios y ficheros como se muestra aqui pero recursivamente?
cual es el codigo en java para poder dibujar diagonales en una aplicacion de colores
por favor se los agradeceria muchisimo
“No ley el post pero supongo que es bueno”. Perdona que te repita, era para comentar tambien
por dios como escriben aqui solo por comentar y no decir nada util…
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.
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…
Oie y si yo kiero saber solo los documentos que aii dentro de la carpeta y subcarptas dentro como puedo aserle??
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.
Y PARA LISTAR UN DIRECTORIO DE UN SITIO REMOTO??