read - resource java
FileNotFoundException en src/main/resources (4)
Coloqué un archivo en mi proyecto principal en src / main / resources, el nombre de los archivos es simplemente temp.txt.
Cuando intento abrir el archivo:
BufferedReader br = new BufferedReader(new FileReader(new File("./temp.txt")));
Me sale un error:
Exception in thread "main" java.io.FileNotFoundException: /temp.txt
todos los archivos bajo src / main / resources se colocan en la carpeta raíz del classpath bajo maven. Entonces, ¿por qué el programa no puede encontrar el archivo aquí?
Maven coloca los archivos en /src/main/resouces/
en el paquete predeterminado de su classpath. Por lo tanto puedes cargar a través del cargador de clases:
InputStream in = getClass().getResourcesAsStream("temp.txt")
Para obtener más información, consulte la Class#getResoucesAsStream .
Si va a empaquetar el archivo en la ruta de clases, entonces léalo como tal ... de la ruta de clases.
Estructura Maven
src
main
resources
file.txt
Después de que se construye, el archivo se coloca en la raíz de la ruta de clase. Asi que usa
InputStream is = getClass().getResourceAsStream("/file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
El /
en frente de file.txt
lo llevará a la raíz, desde cualquier paquete en el que se encuentre la clase.
ACTUALIZAR
Ejemplo de prueba
package com.underdogdevs.;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class TestResourceFile {
public static void main(String[] args) throws IOException {
InputStream is = TestResourceFile.class.getResourceAsStream("/test.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
Tuvo este problema al configurar pruebas de integración en Jenkins.
El problema fue causado por tener el trabajo dentro de una carpeta con espacios en el nombre. Así que en lugar de tener una carpeta de área de trabajo llamada foo bar
, Jenkins creó foo%20bar
y todas las pruebas fallaron con la FileNotFoundException
.
La solución es simplemente cambiar el nombre de su carpeta para que no tenga espacios.
solo dale esto como tu camino
BufferedReader br = new BufferedReader(new FileReader(new
File("src/main/resources/temp.txt")));