lädt eine Datei aus dem Klassenpfad

8

Ich habe eine Codezeile, die lautet: File file = new File(getFile()) in einer Java-Klasse HandleData.java

Methode - getFile() nimmt den Wert der Eigenschaft fileName . Und fileName wird durch application_context.xml mit einem Bean-Abschnitt der Klasse - HandleData wie folgt injiziert:

%Vor%

Ich habe das Projekt erfolgreich erstellt und überprüft, dass - DataFile.xml in WEB-INF/classes vorhanden ist. Und die HandleData.class ist in WEB-INF/classes/com/profile/transacon

vorhanden

Aber wenn ich es starte, wirft es mir eine nicht gefundene Ausnahme.   Wenn ich den absoluten Pfad injiziere ( C:\MyProjectWorkspace\DataProject\target\ProfileService\WEB-INF\classes\DataFile.xml findet die Datei erfolgreich.).

Könnte jemand dabei helfen, den richtigen Pfad für die Injektion herauszufinden, damit die Datei aus dem Klassenpfad übernommen wird?

    
Steer360 08.03.2013, 15:32
quelle

3 Antworten

30

Während das Eingeben von File im Allgemeinen der bevorzugte Ansatz ist, können Sie Spring ResourceLoader auch für das dynamische Laden von Ressourcen nutzen.

Im Allgemeinen ist dies so einfach wie das injizieren der ResourceLoader in Ihre Spring Bean:

%Vor%

Dann aus dem Klassenpfad laden:

%Vor%     
helmy 12.11.2014 18:14
quelle
3

Da OP nur den Dateinamen über den Frühling injiziert, möchten Sie immer noch das Dateiobjekt über Code erstellen, Sie sollten ClassLoadeer verwenden, um die Datei

zu lesen

Versuchen Sie es

%Vor%

Bearbeiten

Hier ist der Rest des Codes, um die Datei

zu lesen %Vor%

Bearbeiten 2

Da Sie es als File Object haben wollen, um den FileInputStream zu bekommen

probiere das

aus %Vor%     
Sudhakar 08.03.2013 15:36
quelle
3

Sie sollten:

%Vor%

Und es sollte als org.springframework.core.io.Resource ähnlich wie diese Antwort

eingegeben werden     
Lucas 08.03.2013 15:35
quelle

Tags und Links