¿Dónde poner un archivo de texto que quiero usar en eclipse?

Necesito leer un archivo de texto cuando comienzo mi progtwig. Estoy usando eclipse y comencé un nuevo proyecto de Java. En la carpeta de mi proyecto obtuve la carpeta “src” y el estándar “JRE System Library” + staedteliste.txt … Simplemente no sé dónde colocar el archivo de texto. Literalmente probé todas las carpetas en las que podía pensar … No puedo usar una ruta “codificada” porque el archivo de texto debe incluirse con mi aplicación …

Utilizo el siguiente código para leer el archivo, pero obtengo este error:

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory) 

 public class Test { ArrayList values; public static void main(String[] args) { // TODO Auto-generated method stub URL url = Test.class.getClassLoader().getResource("src/mjb/staedteliste.txt"); System.out.println(url.getPath()); // I get a nullpointerexception here! loadList(); } public static void loadList() { BufferedReader reader; String zeile = null; try { reader = new BufferedReader(new FileReader("src/mjb/staedteliste.txt")); zeile = reader.readLine(); ArrayList values = new ArrayList(); while (zeile != null) { values.add(zeile.split(";")); zeile = reader.readLine(); } System.out.println(values.size()); System.out.println(zeile); } catch (IOException e) { System.err.println("Error :"+e); } } 

}

Pregúntese primero: ¿su archivo es un componente interno de su aplicación? (Esto generalmente implica que está empaquetado dentro de su JAR, o WAR si es una aplicación web, generalmente es algún archivo de configuración o recurso estático, de solo lectura).

Si la respuesta es sí, no desea especificar una ruta absoluta para el archivo. Pero no quiere acceder a ella con una ruta relativa (como su ejemplo), porque Java asume que la ruta es relativa al ” directorio actual “. Por lo general, la forma preferida para este escenario es cargarlo relativamente desde el classpath .

Java le proporciona el método classLoader.getResource () para hacer esto. Y Eclipse (en la configuración normal) asume src/ is en la raíz de su classpath, de modo que, después de comstackr, copia todo en su directorio de salida ( bin/ ), los archivos java en forma comstackda ( .class ), el rest tal como es.

Entonces, por ejemplo, si coloca su archivo en src/Files/myfile.txt , se copiará en tiempo de comstackción a bin/Files/myfile.txt ; y, en tiempo de ejecución, bin/ estará en (la raíz de) su classpath. Por lo tanto, al llamar a getResource("/Files/myfile.txt") (en algunas de sus variantes) podrá leerlo.

Editado : Además, si su archivo está conceptualmente vinculado a una clase Java (por ejemplo, algunos com.example.MyClass tiene un archivo de configuración asociado MyClass.cfg ), puede usar el método getResource () de la clase y usar un (recurso) ruta relativa: MyClass.getResource("MyClass.cfg") . Luego, se buscará el archivo en la ruta de clase, pero con el paquete de clase preasignado. De modo que, en este escenario, normalmente colocará sus archivos MyClass.cfg y MyClass.java en el mismo directorio.

Un camino a seguir es

  1. Agregue el archivo con el que está trabajando al classpath
  2. Use el cargador de recursos para ubicar el archivo:

      URL url = Test.class.getClassLoader().getResource("myfile.txt"); System.out.println(url.getPath()); ... 
  3. Abrelo

Supongamos que tiene un proyecto llamado “TestProject” en Eclipse y su carpeta de espacio de trabajo está ubicada en E: / eclipse / workspace. Cuando construyes un proyecto de Eclipse, tu classpath es e:/eclipse/workspace/TestProject . Cuando intenta leer “staedteliste.txt”, está intentando acceder al archivo en e:/eclipse/workspace/TestProject/staedteliste.txt .

Si desea tener una carpeta separada para su proyecto, cree la carpeta Archivos en TestProject y luego acceda al archivo con (la ruta relativa) /Files/staedteliste.txt . Si coloca el archivo debajo de la carpeta src, debe acceder a él usando /src/staedteliste.txt . Una carpeta de archivos dentro de la carpeta src sería /src/Files/staedteliste.txt

En lugar de usar la ruta relativa, puede usar la absoluta agregando e:/eclipse/workspace/ al principio, pero usar la ruta relativa es mejor porque puede mover el proyecto sin preocuparse por la refactorización, siempre que la estructura de la carpeta del proyecto es el mismo.

Solo crea una carpeta Files debajo de src y coloca tu archivo allí. Esto se verá como src/Files/myFile.txt

Nota: en su código necesita especificar como este Files/myFile.txt por ejemplo

 getResource("Files/myFile.txt"); 

Entonces cuando construyas tu proyecto y ejecutes el archivo .jar esto debería poder funcionar.

Según el nombre del paquete de la clase Java, probablemente esté a 4 o 5 niveles en la estructura del directorio.

Si su paquete de clase Java es, por ejemplo, com.stackoverflow.project, su clase se encuentra en src / com / stackoverflow / project.

Puede mover la estructura del directorio con múltiples ../ , o puede mover el archivo de texto al mismo paquete que su clase. Sería más fácil mover el archivo de texto.

Probablemente deberías echar un vistazo a los diversos sabores de getResource en la clase ClassLoader: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html

MJB

Por favor, intente esto

  1. En eclipse, haga clic con el botón derecho en el archivo de texto que desee usar, vea y copie la ruta completa almacenada en HDD, como (si está en UNIX “/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/ testfile.txt “)

  2. pon este camino completo y prueba.

  3. si funciona, entonces el tema de la ruta de clase es GOK 🙂

Si se trata de un proyecto simple, debería poder arrastrar el archivo txt directamente a la carpeta del proyecto. Específicamente, la “carpeta del proyecto” sería la carpeta de más alto nivel. Intenté hacer esto (para un proyecto de tarea que estoy haciendo) colocando el archivo txt en la carpeta src, pero eso no funcionó. Pero finalmente me di cuenta de que debía ponerlo en el archivo del proyecto.

Un buen tutorial para esto es http://www.vogella.com/articles/JavaIO/article.html . Lo usé como una introducción a E / S y me ayudó.

Echa un vistazo a este video

Todo lo que tiene que hacer es seleccionar su archivo (asumiendo que es la misma forma simple de archivo txt), luego arrástrelo al proyecto en Eclipse y luego colóquelo allí. Elija Copiar en lugar de Enlace, ya que es más flexible. Eso es todo, lo intenté.