Saltar al contenido

¿Cómo leer el archivo desde la ruta relativa en el proyecto Java? java.io.File no puede encontrar la ruta especificada

Al fin luego de tanto luchar hemos encontrado la respuesta de este dilema que ciertos los usuarios de este espacio presentan. Si quieres aportar algún dato no dudes en compartir tu conocimiento.

Solución:

Si ya está en el classpath, simplemente obténgalo del classpath en lugar del sistema de archivos del disco. No juegues con rutas relativas en java.io.File. Dependen del directorio de trabajo actual sobre el que no tiene ningún control desde el interior del código Java.

Asumiendo que ListStopWords.txt está en el mismo paquete que su FileLoader clase, luego haz:

URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());

O si todo lo que busca en última instancia es en realidad un InputStream de eso:

InputStream input = getClass().getResourceAsStream("ListStopWords.txt");

Esto es ciertamente preferible a crear un new File() porque el url no necesariamente representa una ruta del sistema de archivos del disco, pero también podría representar la ruta del sistema de archivos virtual (lo que puede suceder cuando el JAR se expande a la memoria en lugar de a una carpeta temporal en el sistema de archivos del disco) o incluso una ruta de red que no son ambas. por definición digerible por File constructor.

Si el archivo es -como sugiere el nombre del paquete- es Realmente un archivo de propiedades completo (que contiene key=value líneas) con solo la extensión “incorrecta”, entonces podría alimentar el InputStream inmediatamente a la load() método.

Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));

Nota: cuando intenta acceder desde adentro static contexto, luego use FileLoader.class (o lo que sea YourClass.class) en lugar de getClass() en los ejemplos anteriores.

La ruta relativa funciona en Java usando el . operador.

  • . significa la misma carpeta que el contexto que se está ejecutando actualmente.
  • .. significa la carpeta principal del contexto que se está ejecutando actualmente.

Entonces, la pregunta es ¿cómo sabe la ruta en la que Java está buscando actualmente?

haz un pequeño experimento

   File directory = new File("./");
   System.out.println(directory.getAbsolutePath());

Observe la salida, llegará a conocer el directorio actual donde está buscando Java. A partir de ahí, simplemente use el operador ./ para ubicar su archivo.

por ejemplo, si la salida es

G:JAVA8WsMiProyectocontenido.

y su archivo está presente en la carpeta MyProject simplemente use

File resourceFile = new File("../myFile.txt");

Espero que esto ayude

La siguiente línea se puede utilizar si queremos especificar la ruta relativa del archivo.

File file = new File("./properties/files/ListStopWords.txt");  

Reseñas y calificaciones

Si crees que ha sido de utilidad este artículo, sería de mucha ayuda si lo compartieras con más entusiastas de la programación de esta manera contrubuyes a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *