Dove mettere un file di testo che voglio usare in eclipse?

Ho bisogno di leggere un file di testo quando avvio il mio programma. Sto usando eclipse e ho avviato un nuovo progetto java. Nella cartella del mio progetto ho ottenuto la cartella “src” e lo standard “JRE System Library” + staedteliste.txt … Non so dove mettere il file di testo. Ho letteralmente provato ogni cartella in cui ho potuto pensare … Non posso usare un percorso “hard coded” perché il file di testo deve essere incluso con la mia app …

Io uso il seguente codice per leggere il file, ma ottengo questo errore:

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

}

Chiedi prima tu stesso: il tuo file è un componente interno della tua applicazione? (Di solito implica che è impacchettato all’interno del tuo JAR, o WAR se si tratta di un’app web, in genere, è un file di configurazione o una risorsa statica, di sola lettura).

Se la risposta è sì, non si desidera specificare un percorso assoluto per il file. Ma non vuoi nemmeno accedervi con un percorso relativo (come nel tuo esempio), perché Java assume che il percorso sia relativo alla ” directory corrente “. Di solito il modo preferito per questo scenario è di caricarlo relativamente dal classpath .

Java fornisce il metodo classLoader.getResource () per fare ciò. E Eclipse (nella configurazione normale) presuppone che src/ sia nella root del classpath, in modo che, dopo la compilazione, copi tutto nella directory di output ( bin/ ), i file java in forma compilata ( .class ), il resto così com’è.

Quindi, per esempio, se metti il ​​tuo file in src/Files/myfile.txt , verrà copiato al momento della compilazione in bin/Files/myfile.txt ; e, in fase di esecuzione, bin/ sarà in (la radice del) classpath. Quindi, chiamando getResource("/Files/myfile.txt") (in alcune delle sue varianti) sarai in grado di leggerlo.

Modificato : Inoltre, se il file è concettualmente legato a una class java (ad esempio, alcuni com.example.MyClass ha un file di configurazione associato a MyClass.cfg ), è ansible utilizzare il metodo getResource () dalla class e utilizzare una (risorsa) percorso relativo: MyClass.getResource("MyClass.cfg") . Il file verrà quindi ricercato nel classpath, ma con il pacchetto di class pre-aggiunto. In questo scenario, in genere, i file MyClass.cfg e MyClass.java nella stessa directory.

Un percorso da seguire è quello di

  1. Aggiungi il file con cui stai lavorando al classpath
  2. Utilizzare il caricatore di risorse per individuare il file:

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

Supponiamo di avere un progetto chiamato “TestProject” su Eclipse e la cartella del workspace si trova in E: / eclipse / workspace. Quando si crea un progetto Eclipse, il classpath è quindi e:/eclipse/workspace/TestProject . Quando provi a leggere “staedteliste.txt”, stai cercando di accedere al file in e:/eclipse/workspace/TestProject/staedteliste.txt .

Se si desidera avere una cartella separata per il progetto, quindi creare la cartella File in TestProject e quindi accedere al file con (il percorso relativo) /Files/staedteliste.txt . Se metti il ​​file sotto la cartella src, devi accedervi usando /src/staedteliste.txt . Una cartella Files all’interno della cartella src sarebbe /src/Files/staedteliste.txt

Invece di usare il percorso relativo puoi usare quello assoluto aggiungendo e:/eclipse/workspace/ all’inizio, ma usare il percorso relativo è migliore perché puoi spostare il progetto senza preoccuparti del refactoring purché la struttura della cartella del progetto è la stessa.

Basta creare una cartella Files sotto src e mettere il tuo file lì. Questo sembrerà come src/Files/myFile.txt

Nota: nel tuo codice devi specificare come questo Files/myFile.txt es

 getResource("Files/myFile.txt"); 

Quindi quando costruisci il tuo progetto ed esegui il file .jar questo dovrebbe essere in grado di funzionare.

A seconda del nome del pacchetto della class Java, probabilmente ci sono 4 o 5 livelli nella struttura della directory.

Se il pacchetto di classi Java è, ad esempio, com.stackoverflow.project, la class si trova in src / com / stackoverflow / project.

Puoi spostare la struttura della directory con più ../ , oppure puoi spostare il file di testo nello stesso pacchetto della tua class. Sarebbe più semplice spostare il file di testo.

Probabilmente dovresti dare un’occhiata alle varie versioni di getResource nella class ClassLoader: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html

MJB

Per favore prova questo

  1. In eclipse “clic destro” sul file di testo che vuoi usare, vedere e copiare il percorso completo memorizzato in HDD come (se in UNIX “/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/ Testfile.txt “)

  2. metti questo percorso completo e prova.

  3. se funziona allora problema del percorso di class altro GOK 🙂

Se questo è un progetto semplice, dovresti essere in grado di trascinare il file txt direttamente nella cartella del progetto. In particolare, la “cartella del progetto” sarebbe la cartella di livello più alto. Ho provato a farlo (per un progetto di compiti che sto facendo) inserendo il file txt nella cartella src, ma non ha funzionato. Ma alla fine ho capito di metterlo nel file del progetto.

Un buon tutorial per questo è http://www.vogella.com/articles/JavaIO/article.html . L’ho usato come intro per l’I / O e mi ha aiutato.

Dai un’occhiata a questo video

Tutto quello che devi fare è selezionare il tuo file (supponendo che sia la stessa semplice forma di file txt), quindi trascinarlo nel progetto in Eclipse e rilasciarlo lì. Scegli Copia invece di Collegamento in quanto è più flessibile. E ‘tutto – l’ho appena provato.