In Servlet (Web-App) woher weiß ich den relativen Pfad? [Duplikat]

8

Ich habe eine jsp-Datei im root der WAR-Datei. und dann habe ich einen Ordner namens STUFF.

Wie bekomme ich Zugriff auf die Datei read.txt in STUFF?

/Name_of_war/STUFF/read.txt ist der richtige Pfad?

    
EugeneP 16.03.2010, 15:05
quelle

2 Antworten

23

Der webapp-relative Pfad ist /STUFF/read.txt .

Sie könnten ServletContext#getRealPath() , um einen relativen Webpfad in einen absoluten lokalen Dateisystempfad zu konvertieren. Auf diese Weise können Sie es weiter in den üblichen java.io stuff verwenden, die eigentlich nichts über den Web-Kontext wissen, in dem es läuft. ZB

%Vor%

Dies funktioniert jedoch nicht, wenn der Server so konfiguriert ist, dass der WAR im Speicher statt auf dem Datenträger erweitert wird. Die Verwendung von getRealPath() hat immer diese Einschränkung und wird in realen Anwendungen nicht empfohlen. Wenn Sie letztendlich nur einen InputStream dieser Datei benötigen, für den Sie wahrscheinlich FileInputStream verwendet hätten, verwenden Sie besser ServletContext#getResourceAsStream() , um es direkt als InputStream :

zu erhalten %Vor%     
BalusC 16.03.2010, 15:07
quelle
1

Wenn es sich im Klassenpfad befindet oder Sie den Ordner zum Klassenpfad hinzufügen können, Wie wäre es mit: ClassLoader classLoader = Thread.currentThread (). GetContextClassLoader (); InputStream input = classLoader.getResourceAsStream (Dateiname);

    
kakacii 03.04.2013 03:39
quelle

Tags und Links