2017-05-31 4 views
2

Ich habe ein Java-Webanwendungsprojekt, das aus einem Java-Servlet und dann einer klassischen Java-Datei besteht. Das Servlet ruft die in der Java-Datei implementierten Methoden auf.Tomcat7 kann meine TXT-Datei nicht finden

Eine dieser Methoden beinhaltet das Lesen aus einer Datei und das Einfügen des Inhalts dieser Datei in ein Array. Nach dem Ausprobieren von BufferedReader, InputStream und classloader.getResource() kann ich die txt-Datei jedoch immer noch nicht finden.

Im Tomcat-Verzeichnis befinden sich die Java-Dateien und die TXT-Datei in/WEB-INF/classes. So bin ich nicht sicher, warum es die Datei nicht finden kann.

Würde jemand in der Lage sein, mir den besten Weg zu sagen, zu versuchen, von dieser Akte zu lesen?

Vielen Dank im Voraus.

EDIT: Dies ist mein letzter Versuch zu versuchen, von ihm zu lesen, die in der FileNotFound-Ausnahme führte.

ClassLoader cl = testClass.class.getClassLoader(); 
File file = new File(cl.getResource("text.txt").getFile()); 

Scanner sc = new Scanner(file); 
+0

Bitte fügen Sie den Code ein, unter dem Sie die Datei erhalten. – Alfabravo

+4

Mögliches Duplikat von [Java-Ressource als Datei] (https://stackoverflow.com/questions/676097/java-resource-as-file) und https://stackoverflow.com/questions/4359876/how-to-load- reference-a-file-als-eine-file-instance-from-the-classpath – Arpit

+0

@Arpit hat all diese Lösungen ausprobiert und sie haben mir nicht geholfen. Danke, aber –

Antwort

0

Ohne führende/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("text.txt").getFile());

text.txt sollte in WEB-INF/classes/ppp/text.txt wo ppp sein ist der Paketpfad von testClass.

Mit führenden/

ClassLoader cl = testClass.class.getClassLoader(); File file = new File(cl.getResource("/text.txt").getFile());

text.txt wird auf Classpath (tomcat/lib, WEB-INF/lib, WEB-INF/classes, etc.) durchsucht.

+0

Ooh danke, ich hatte tatsächlich den ersten Teil Ihrer Antwort mit Text versucht, txt an der richtigen Stelle und es hatte immer noch Schwierigkeiten, die Datei zu finden. Aber ich habe gerade festgestellt, dass ich kein benanntes Paket habe, es ist einfach (Standard-Paket in Eclipse). Ich frage mich, ob das ein Problem verursachen könnte? Ich werde es auch mit dem führenden/versuchen. Eine Frage: Wenn Sie sagen, dass auf dem Klassenpfad gesucht wird. Bedeutet das, dass es keinen bestimmten Ort zu sein braucht, es könnte sich in einem der Verzeichnisse befinden, die Sie aufgelistet haben (d. H. Tomcat/lib, WEB-INF/lib, WEB-INF/Klassen, etc.)? –

+0

Ich bin nicht sicher, alle Verzeichnisse von Tomcat Classpath, aber ich weiß, dass die, die ich aufgelistet habe, sind. Versuchen Sie, logging file.getCanonicalPath() zu erstellen, um den genauen Pfad zu sehen, der verwendet wird. –

+0

Ich habe versucht, Ihre führende/Lösung mit meiner Textdatei im WEB-INF/Klassen-Verzeichnis und es funktionierte für mich! Vielen Dank für Ihre Hilfe!!!! –

0

Sie können dies versuchen:

File file = new File(ClassLoader.getSystemResource("/path/to/file.txt").getFile()); 
+0

danke! habe gerade das versucht und jetzt gibt es keinen Fehler, der nicht gefunden wird, sondern einen Null-Null-Fehler statt. Hast du zufällig eine Idee warum? –

Verwandte Themen