este problema se puede resolver de diversas maneras, pero te compartimos la que en nuestra opinión es la resolución más completa.
Solución:
Primero pregúntese: ¿Es su archivo un interno componente de su aplicación? (Eso generalmente implica que está empaquetado dentro de su JAR, o WAR si es una aplicación web; por lo general, es algún archivo de configuración o static recurso, solo lectura).
Si la respuesta es afirmativa, no desea especificar un camino absoluto para el archivo Pero tampoco quieres acceder a él con un camino relativo (como su ejemplo), porque Java asume que la ruta es relativa a “directorio actual“. Por lo general, la forma preferida para este escenario es cargarlo relativamente del classpath.
Java le proporciona la cargador de clases.getResource() método para hacer esto. Y Eclipse (en la configuración normal) asume src/
es estar en la raíz de su classpath, de modo que, después de compilar, copie todo en su directorio de salida ( bin/
), los archivos java en formato compilado ( .class
), el resto tal cual.
Entonces, por ejemplo, si coloca su archivo en src/Files/myfile.txt
se copiará en tiempo de compilación para bin/Files/myfile.txt
; y, en tiempo de ejecución, bin/
estará en (la raíz de) su classpath. Entonces, llamando getResource("/Files/myfile.txt")
(en algunas de sus variantes) podrás leerlo.
editado: Además, si su archivo está ligado conceptualmente a una clase Java (por ejemplo, algunos com.example.MyClass
tiene un MyClass.cfg
archivo de configuración asociado), puede usar el método getResource() de la clase y usar una ruta relativa (recurso): MyClass.getResource("MyClass.cfg")
. Luego, el archivo se buscará en el classpath, pero con el paquete de clase preanexado. De modo que, en este escenario, normalmente colocará su MyClass.cfg
y MyClass.java
archivos en el mismo directorio.
Un camino a seguir es
- Agregue el archivo con el que está trabajando al classpath
-
Utilice el cargador de recursos para localizar el archivo:
URL url = Test.class.getClassLoader().getResource("myfile.txt"); System.out.println(url.getPath()); ...
- Abrelo
Solo crea una carpeta Files
por debajo src
y poner su archivo allí. esto se verá como src/Files/myFile.txt
Nota:
En tu código necesitas especificar así Files/myFile.txt
p.ej
getResource("Files/myFile.txt");
Entonces, cuando construya su proyecto y ejecute el archivo .jar, esto debería poder funcionar.
Si aceptas, puedes dejar un enunciado acerca de qué te ha gustado de esta noticia.