File aus Projektverzeichnis laden

moessi91

Bekanntes Mitglied
Wahrscheinlich eine ziemlich einfache Frage aber ich bekomms einfach nicht hin...
Ich möchte gerne in meiner Webapplikation aus einem Propperties File auslesen das ich im Projektverzeichniss speichere.
Wenn ich jetzt jedoch mit "./" zugreife komme ich ins Server Verzeichnis. Mit "/" komme ich auf "C:\"
Aber wie komme ich in mein Projektverzeichnis?

lg
 

brauner1990

Bekanntes Mitglied
Du musst dich erstmal von
Code:
C:
lösen. Du arbeitest am besten immer nur mit relativen Pfaden. Wenn du eine Java WebApp deployst, dann werden auch alle Properties-Files mitdeployt. Du musst dir am besten mal die Struktur des war-File (oder Pendant dazu) angucken. 7Zip oder Winrar sind dafür gut. Die können diese Files händeln.
 

moessi91

Bekanntes Mitglied
Ja das ist schon klar... :/
Aber wie kann ich mir im Quellcode den Pfad zum Projektverzeichnis holen?
Das müsste doch irgendwie über die URL gehen oder?
 
S

Sym

Gast
Was möchtest Du denn auslesen?

Einfache Texte?
Muss es die gesamte Datei an einem Stück sein?
 

JimPanse

Bekanntes Mitglied
Wo liegt denn die Propertie datei? "Projektverzeichniss!"? Wenn die datei im classpath liegt

Code:
ResourceBundle bundle = ResourceBundle.getBundle("datei");

wenn die datei in einem web-verzeichniss liegt

Bsp:

war.file
-prop/
-jsp/
-web-inf/

dann musst du dir den ServletContext deiner Web-Anwendung holen und:
Code:
String path = getServletContext().getRealPath( "/prop/datei.properties");
File file = new File(path);
Properties properties = new Properties();
BufferedReader  inputStream = new BufferedReader(new InputStreamReader( new FileInputStream(file), "UTF-8"));
	
		try {
			properties.load(inputStream);
		} finally {
			if (inputStream != null) {
				inputStream.close();
			}
		}
 

moessi91

Bekanntes Mitglied
Also ich habe dabei 2 Fälle:
einmal brauche im in meinem Bean welches einen Upload verwaltet den Projektpfad da dort in einen Ordner die Daten kopiert werden sollen.
Und im 2. Fall bin ich in meiner Datenbankklasse welche die Klasse dbInfo aufruft welche dann die Properties Datei öffnen soll und ausließt.
Wie müsste ich das auslesen wenn im im Projektverzeichniss im ersten Fall alles in den ordern /images soll und die properties datei direkt drinnen liegt.
 

moessi91

Bekanntes Mitglied
Java:
ClassLoader loader = ClassLoader.getSystemClassLoader();
InputStream in = loader.getResourceAsStream("dbInfo.properties");

Habe das jetzt mal so gemacht doch habe ich keine ahnung wo das "dbInfo.properties" file liegen muss damit das jetzt geht.
....
zuzeit ist der inputstream immer "Null"
 

jule37

Aktives Mitglied
für webanwendungen hat sich für mich bewährt den class loader der aktiven klasse zu benutzen um properties zu laden:

Java:
public class Foo {
    public void loadProperties() {
        Class<?> c = Foo.getClass();
        InputStream in = c.getResourceAsStream("/my.properties");
        Properties properties = new Properties();
        properties.load(in);
        // ...
    }
}
Der Vorteil: mit dieser Variante ist man nicht von der Ausführungsumgebung abhängig. Der Ort / ist hier immer das classes Verzeichnis deiner Anwendung. Damit die Properties Datei beim Build von selbst an diesem Ort landet, lege sie z.B. in Eclipse unter src/ ab. Wenn man das war dann in Tomcat deployed liegt das Properties File dann unter $CATALINA_HOME/webapps/Foobar/WEB-INF/classes/
 

moessi91

Bekanntes Mitglied
Aber wie kann ich jetzt direkt auf das Verzeichnis kommen?
Also ich will jetzt zum Beispiel wieder ein File hineinschreiben, ein neues, woher bekomme ich dann das Projektverzeichnis?
Geht das dann auch über die Klasse?
 

jule37

Aktives Mitglied
nein das geht nicht. das ist nur zum lesen. in diesem fall musst du entweder einen absoluten pfad haben oder den ort von der ausführungsumgebung erhalten. dafür kann ich dir leider ad hoc kein beispiel geben. müsste ich jetzt selber googlen, aber das kannst du auch ;)

wichtig zum verständnis: so etwas wie projektverzeichnis gibt es bei webapplikationen nicht. der ausführungskontext ist immer der servlet container (z.b. tomcat) und du musst davon ausgehen, dass du sein working directory nicht kennst. vielleicht hilft dir dafür die antwort von JimPanse weiter?

Java:
String path = getServletContext().getRealPath( "/prop/datei.properties");

sieht vielversprechend aus
 

moessi91

Bekanntes Mitglied
hmm....
Naja ich gehe ja von einem Bean aus. Dabei wird eine Datei hochgeladen, welche dann in ein Verzeichnis einen Ordner über dem Klassenverzeichnis soll. Nur hier habe ich keinen Servletcontext bzw. weiß ich nicht woher ich den bekommen soll. Kann man nicht über die Klasse auslesen wo sie liegt?
Das Problem dabei ist, wenn ich dann das Upgeloadete Bild in der index.xhtml anzeigen will dann benutze ich auch relative Pfade, jedoch verweisen die dann in die WebInf im Projektverzeichniss!
lg
 
Zuletzt bearbeitet:

JensMander

Bekanntes Mitglied
hallo forum, ich hänge mich einfach mal an die frage hier mit ran:

ich habe ein "normales" Tomcat webapps-Verzeichnis unterdem alle meine notwendigen Daten liegen.

Im Ordner "Web-Inf/classes/packageTest/" befindet sich eine Klasse, die eine Datei einliesst,
wenn ich den gesamten Pfad angebe "C:/Tomcat/webapps/anwendung01/dateien/" dann wird die datei auch eingelesen und alles funktioniert. Wenn ich nun aber einfach "../../../dateien/" verwende klappt gar nichts. bedeutet dass auch das ich das auf den vorher beschriebenen weg machen muss, oder habe ich einfach nur etwas anderes falsch gemacht?
mfg
jens
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H File Output Servlet Web Tier 6
H Applet wirft AccessControlException bei File von Servlet Web Tier 3
M JSP File Browser Web Tier 9
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
N File empfangen Web Tier 3
R Download JSP-File/Script Web Tier 3
L File Upload - Dateiformat einschränken Web Tier 4
N is out of sync with file system Web Tier 2
S Servlet File Upload (API oder JSPSmart download) Web Tier 4
reibi Konfiguration ausserhalb vom WAR-File Web Tier 7
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
R File Einlesen mit jsp/servlets Web Tier 11
hdi File Upload erst nach Prüfung Web Tier 4
E Jsp file upload Web Tier 3
D welcome-file in web.xml Web Tier 3
O eine .do-File als welcome-file im web.xml Web Tier 4
E File upload mit jsp (frage zum speicherort) Web Tier 12
X Properties-File und relative Pfadangaben Web Tier 5
S JSP File Download (SVNKit) Web Tier 11
T Tomcat-Projektverzeichnis Web Tier 13
F JSF - Seiteninhalt dynamisch laden Web Tier 5
R Servlet Resource laden für SMTP - Session Web Tier 4
R JSF Mit Ajax ganze Seite neu laden Web Tier 2
N Image von Dienst laden Web Tier 2
K Dynamische Inhalt auf ein "DIV" laden Web Tier 2
S Laden von globalen Resourcen im Servlet Container..? Web Tier 3
U jsf anker/sprungmarke nachdem laden Web Tier 2
A SSL-Zertifikat in Java-Webanwendungen laden Web Tier 4
F Datei von bean aus laden Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben