Necesito leer un archivo de texto cuando inicio mi programa. Estoy usando eclipse y comenzó un nuevo proyecto de java. En mi carpeta de proyecto tuve el «src» de la carpeta y el estándar de «JRE Sistema de Biblioteca» + staedteliste.txt… sólo que no sé donde poner el archivo de texto. Yo, literalmente, se trató de cada carpeta se podría pensar fuera….No puedo utilizar el «codificados» ruta de acceso debido a que el archivo de texto debe ser incluido con mi aplicación…

Puedo usar el siguiente código para leer el archivo, pero me sale este error:

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

public class Test {

ArrayList<String[]> 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<String[]> values = new ArrayList<String[]>();

        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);
    }
}

}

  • a la hora de lanzar la aplicación desde Eclipse puede configurar el directorio de inicio. Está usted seguro de que no accidentalmente misconfigure es? new File(".").getAbsolutePath() te mostraré.
InformationsquelleAutor MJB | 2010-05-17

9 Comentarios

  1. 44

    Preguntar primero a ti mismo: Es el archivo de un interna componente de su aplicación?
    (Que generalmente implica que se llena el interior del TARRO, de la GUERRA o si se trata de una web-app, por lo general, se trata de algún archivo de configuración o de recursos estáticos, sólo lectura).

    Si la respuesta es sí, usted no desea especificar un ruta de acceso absoluta para el archivo. Pero ninguno de los dos quiera acceder a ella con un ruta de acceso relativa (como en tu ejemplo), ya que Java asume que la ruta es relativa a la «directorio actual«. Generalmente la forma preferida para este escenario es para cargar relativamente de la ruta de clases.

    Java proporciona la cargador de clases.getResource() método para hacerlo. Y Eclipse (en la instalación normal) asume src/ es estar en la raíz del classpath, por lo que, después de compilar, se copia todo a su directorio de salida ( bin/ ), los archivos de java en forma compilada ( .class ), el resto como está.

    Así, por ejemplo, si coloca el archivo en src/Files/myfile.txt, será copiado en tiempo de compilación para bin/Files/myfile.txt ; y, en tiempo de ejecución, bin/ será en (la raíz) de su ruta de clases. Así, llamando getResource("/Files/myfile.txt") (en algunas de sus variantes), usted será capaz de leerlo.

    Editado: Además, si el archivo es conceptualmente ligado a una clase de java (por ejemplo, algunos com.example.MyClass tiene un MyClass.cfg archivo de configuración asociado), puede utilizar el getResource() método de la clase y el uso de un (recursos) ruta de acceso relativa: MyClass.getResource("MyClass.cfg"). El archivo, a continuación, se buscará en la ruta de clases, pero con el paquete de clase pre-anexa. De modo que, en este escenario, se le suele colocar su MyClass.cfg y MyClass.java archivos en el mismo directorio.

    • la carpeta no es importante, sólo traté de hacerlo con una carpeta como yo no tenía idea de qué más hacer.. de todos modos, me trató de «Greg Adamski»‘s código, pero no funciona….
    • Greg código debería funcionar. Es «Prueba» de la clase que tiene su principal método ? (no es necesario) Hiciste una generación completa en Eclipse, su archivo se copian a su directorio/ bin ?
    • sí… lo sé, no es la mejor práctica, pero como se puede adivinar, es solo una prueba… mi proyecto se llama «Prueba» y así es mi única clase que contiene el método main….. No puedo construirlo porque tengo la NPexception… :/ Si yo fuera el comentario de la línea donde puedo obtener el NPeception-error, me sale el fileNotFoundException de nuevo… pero sí.. cuando llego a la filenotfound-exc, el archivo se copia en el directorio «bin».
    • «No se puede construir porque tengo la NPexception» … erhmmm … primero construir (proyecto -> la construcción de todos), es decir, compilar; después de ejecutar. El NPE debe venir durante la ejecución, después de la compilación.
    • sí, lo siento, yo construir y ejecutar al mismo tiempo… la .txt es en /bin…
  2. 9

    Una ruta a tomar es

    1. Agregar el archivo que se está trabajando para que el classpath
    2. Utilizar el cargador de recursos para localizar el archivo:

          URL url = Test.class.getClassLoader().getResource("myfile.txt");
          System.out.println(url.getPath());
          ...
    3. Abrir
    • public static void main(String[] args) { URL URL = Prueba.clase.getClassLoader().getResource(«staedteliste.txt»); System.a cabo.println(dirección url.getPath()); } tengo un NullPointerException cuando llego a la seg.o.línea de p.. me coloque el archivo en el directorio src/ carpeta y la raíz de mi proyecto, en el «Test/..»
    • Usted necesita asegurarse de que su archivo se muestra arriba a la derecha debajo de su directorio src en eclipse. Si sólo se copian en el uso de la explorer, tendrás que actualizar el proyecto para que se muestre.
    • En mi Explorador de Paquetes de eclipse, tengo mi Proyecto llamado «Prueba». Al ampliar la «Prueba» veo «src», «JRE SystemLibrary» y «staedteliste.txt» (en este orden).. acabo de actualizar y corrió de nuevo el código, pero todavía NPExc..
    • staedteliste.txt tiene que ser bajo src, no junto a él.
    • con debajo de la media en el interior!…? sin embargo, yo, literalmente, poner en cada carpeta… no funciona… :/
  3. 3

    Sólo tienes que crear una carpeta Files bajo src y poner el archivo allí.
    Esto se verá como src/Files/myFile.txt

    Nota:
    En el código se necesita especificar como este Files/myFile.txt
    por ejemplo,

    getResource("Files/myFile.txt");

    Así que cuando usted construye su proyecto y ejecute el .archivo jar este debe ser capaz de trabajar.

    • No debe el nombre de la carpeta, en minúscula ?
    • no me funciona, he tenido que poner el archivo en el directorio de proyecto principal como Marca aconsejó.
  4. 2

    Supongamos que usted tiene un proyecto llamado «TestProject» en Eclipse y en su área de trabajo se encuentra la carpeta en E:/eclipse/workspace. Cuando se construye un proyecto de Eclipse, su classpath es entonces e:/eclipse/workspace/TestProject. Cuando intenta leer «staedteliste.txt» estás tratando de obtener acceso al archivo en e:/eclipse/workspace/TestProject/staedteliste.txt.

    Si quieres tener una carpeta independiente para el proyecto, a continuación, crear la carpeta de Archivos de bajo TestProject y, a continuación, acceder al archivo con la ruta relativa) /Files/staedteliste.txt. Si pones el archivo en la carpeta src, entonces usted tiene que tener acceso a él mediante /src/staedteliste.txt. Una carpeta de Archivos dentro de la carpeta src sería /src/Files/staedteliste.txt

    Lugar de utilizar la ruta de acceso relativa puede utilizar el absoluto mediante la adición de e:/eclipse/workspace/ al principio, pero utilizando la ruta de acceso relativa es mejor, porque se puede mover el proyecto sin tener que preocuparse acerca de refactorización mientras la estructura de carpetas del proyecto es el mismo.

    • no funciona. Tengo un NullPointerException ahora.. yo, literalmente, poner el archivo en todas partes podía pensar en off y cambiar la ruta de acceso en consecuencia,… nada de nada…
  5. 0

    Dependiendo de su clase de Java el nombre del paquete, usted está probablemente 4 o 5 niveles de la estructura de directorios.

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

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

    • mi nombre del paquete es «mjb» lo que he usado «src/mjb/staedteliste.txt».. Incluso cuando pongo mi .archivo txt en cada carpeta tengo un nullpointerexception.
  6. 0

    MJB

    Por favor trate de esta

    1. En eclipse «clic Derecho» sobre el archivo de texto u wanna uso,
      ver y copiar la ruta de acceso completa almacenados en el HDD como (si en UNIX «/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/testfile.txt»)

    2. poner esta ruta de acceso completa y probar.

    3. si funciona luego de la clase de la ruta problema más GOK 🙂

  7. 0

    Si este es un proyecto simple, usted debería ser capaz de arrastrar el archivo txt derecho en la carpeta del proyecto. Específicamente, el proyecto de la «carpeta» sería el más alto nivel de carpeta. Traté de hacerlo (para una tarea del proyecto que estoy haciendo) por poner el archivo txt en la carpeta src, pero que no funcionó. Pero finalmente me di cuenta de ponerlo en el archivo de proyecto.

    Un buen tutorial para esto es http://www.vogella.com/articles/JavaIO/article.html. He usado esto como una introducción a la e/s y ayudó.

  8. 0

    Echa un vistazo a este video

    Todo lo que tienes que hacer es seleccionar el archivo (suponiendo que de la misma forma simple de archivo txt), a continuación, arrástrelo para el proyecto en Eclipse y, a continuación, suéltelo allí. Elija Copiar en lugar de Enlace, ya que es más flexible. Eso es todo – yo sólo probé.

Dejar respuesta

Please enter your comment!
Please enter your name here