public static void main(String[] args) {
final File carpeta = new File("C:\\Users\\Juan\\Documents");
listarFicherosPorCarpeta(carpeta );
}
public static void listarFicherosPorCarpeta(final File carpeta) {
for (final File ficheroEntrada : carpeta.listFiles()) {
if (ficheroEntrada.isDirectory()) {
listarFicherosPorCarpeta(ficheroEntrada);
} else {
if(ficheroEntrada.getName().endsWith((".pdf"))){
System.out.println(ficheroEntrada.getAbsolutePath());
System.out.println(ficheroEntrada.getName());
}
}
}
}
//el error que me sale
Exception in thread "main" java.lang.NullPointerException
at prjprueba2.PrjPrueba2.listarFicherosPorCarpeta(PrjPrueba2.java:27)
at prjprueba2.PrjPrueba2.listarFicherosPorCarpeta(PrjPrueba2.java:29) ,
at prjprueba2.PrjPrueba2.main(PrjPrueba2.java:22)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
- 10,060
- 11
- 35
- 68
- 19
- 6
-
Prueba a poner un punto de interrupción en el for para ver como te entra el parámetro carpeta, también pon en 'listarFicherosPorCarpeta(ficheroEntrada);' y en 'if(ficheroEntrada.getName().endsWith((".pdf"))){ ' para ver en qué rama entra antes de dar el NullPointer y haz debug. A partir de ahí tenemos más datos para ayudarte. – Angel Gonzalez Pena Oct 09 '18 at 06:11
-
Puedes controlarlo con un `try and catch`. Dentro del `try`meterías todo el código `for`, y si te falla, entrará por el `catch` y mostrará algún tipo de mensaje – Csc99 Oct 09 '18 at 10:06
-
Claramente el stacktrace de la excepción esta mostrando donde ocurre el error "at prjprueba2.PrjPrueba2.listarFicherosPorCarpeta(PrjPrueba2.java:27)", sin embargo el código que compartes no está completo no es posible ayudarte solo con ese fragmento – Jonnathan Q Oct 09 '18 at 13:17
-
¿Y en tu código cual es la linea 27? ¿Cual es el contenido de tu carpeta?. – Darth Vader Oct 09 '18 at 14:13
1 Answers
Asegúrate que la ruta C:\Users\Juan\Documents existe y este bien escrita, y como veo que estas utilizando Windows verifica que tengas permisos sobre la carpeta Documents, yo aquí por default tenía Control Total y se ejecutaba correctamente,pero cuando se lo cambié a Denegar me marcó el NullPointerException:
Este es mi código, solo le cambié la ruta:
public static void main(String[] args) {
final File carpeta = new File("C:\\archivo\\Documentos");
listarFicherosPorCarpeta(carpeta );
}
public static void listarFicherosPorCarpeta(final File carpeta) {
for (final File ficheroEntrada : carpeta.listFiles()) {
if (ficheroEntrada.isDirectory()) {
listarFicherosPorCarpeta(ficheroEntrada);
} else {
if(ficheroEntrada.getName().endsWith((".pdf"))){
System.out.println(ficheroEntrada.getAbsolutePath());
System.out.println(ficheroEntrada.getName());
}
}
}
}
En mi carpeta Documentos tengo 2 archivos, 1 es word y otro pdf(también lo ejecuté con la carpeta vacía, pero no me marcó nada):
Este es el resultado:
C:\archivo\Documentos\archivo1.pdf
archivo1.pdf
Tal vez tengas una carpeta y esa carpeta no tenga permisos tampoco yo agregué una carpeta y le denegué los permisos y este fue el resultado:
C:\archivo\Documentos\archivo1.pdf archivo1.pdf
Exception in thread "main" java.lang.NullPointerException
at Test.listarFicherosPorCarpeta(Test.java:14)
at Test.listarFicherosPorCarpeta(Test.java:16)
at Test.main(Test.java:9)
- 845
- 1
- 8
- 13
-
Si existe la ubicacion que le mando y si me imprime los documentos que encuentra pero al final me bota error null pointer – Juan Seferino Oct 10 '18 at 02:35
-
@JuanSeferino edité mi respuesta agregué una carpeta y le denegué los permisos.Utiliza el debug y pon un breakpoint y ve cual es el valor en el que devuelve el NullPointerException. – Darth Vader Oct 10 '18 at 15:44
-
Creo que es un problema más de permisos de lectura en Windows sobre el siguiente elemento después de **Seguridadciudadana.pdf**. – Darth Vader Oct 10 '18 at 16:55