Frage

Ich habe ein Java-Projekt, die diese Dateistruktur hat (gezeigt in Eclipse):

ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
   ¦- Package1
      -MyClass.java
¦- FileFolder
   -MyFile.txt

Und so weit von myClass ich in der Lage bin MyFile.txt mit zu lesen:

try
{
    reader = new BufferedReader(new FileReader(new File("FileFolder/MyFile.txt")));

while((line=reader.readLine())!=null)
{
    line=line.trim();
    myVector.add(line);
}
reader.close();
}
catch(Exception e)
{
     e.printStackTrace();
}

Aber wenn ich Package1 in eine dynamische Web-Projekt und die FileFolder Ordner in root setzen, wird die Datei nicht mehr gefunden.

Wer weiß, wie die Datei zu lesen?

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Dynamische Web-Projekte generieren IST-Dateien.

Der Server kann oder die WAR-Datei zurück auf eine Dateisystemstruktur nicht erweitern.

Sie sind am besten aus der Klasse oder Classloader mit .getResourceAsStream("/FileFolder/MyFile.txt") , welche Dateien von JAR / WAR-Dateien lesen kann, und gibt einen InputStream.

Beispiel:

reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/FileFolder/MyFile.txt")));

Edit: Wenn diese von einem Servlet ist, sollten Sie mit GAWI Antwort statt.

Bearbeiten. 2: Wenn dies in einer static Methode ist, müssen Sie MyClass.class verwenden, anstatt this.getClass(), wo MyClass ist der Klassenname

Andere Tipps

Sie öffnen eine Datei einen Pfad relativ zum aktuellen Arbeitsverzeichnis verwenden. Das ist wahrscheinlich nicht die Arbeit an einem Container Web-App, da das aktuelle Arbeitsverzeichnis wird nicht die Wurzel Ihrer Anwendung sein.

Außerdem Sie Datei auf dem Dateisystem möglicherweise nicht, sondern in einer WAR-Datei.

Der richtige Weg, um eine Datei in einem Webapp zu öffnen, ist die ServletContext.getResourceAsStream () -Methode zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top