# datei laden und wieder speichern



## rosmi (28. Mai 2004)

Problemstellung: Es gibt eine Property-Datei, die im classpath liegt, und die ausgelesen, 

verändert und wieder gespeichert werden soll.

Ausgelesen kann die Datei mit InputStream inputStream = 

getClass().getResourceAsStream("/my/package/resource/Config.properties");
Dann properties.load(inputStream);

Wie kann ich aber diese Datei genau dort zu speichern, wo sie sich vor dem Auslesen befand?

Wenn es einen Weg gäbe, aus dem InputStream einen File oder FileInputStream zu erzeugen...


----------



## Snape (29. Mai 2004)

> _Original geschrieben von rosmi _
> *Problemstellung: Es gibt eine Property-Datei, die im classpath liegt, und die ausgelesen,
> 
> verändert und wieder gespeichert werden soll.
> ...



Ich werde auf die Schnelle nicht schlau aus

```
InputStream inputStream =  getClass().getResourceAsStream("/my/package/resource/Config.properties");
```

Du müsstest mal schauen, ob Du stattdessen nicht direkt als FileInputStream anlegen kannst, denn soweit ich sehe, ist FileInputStream von InputStream abgeleitet. Wenn Du dann also

```
FileInputStream inputStream =  getClass().getResourceAsStream("/my/package/resource/Config.properties");
```
benutzen könntest, hättest Du doch den gewünschten FileInputStream.


----------



## Thomas Darimont (29. Mai 2004)

Hallo!

Wie wärs denn damit?

Die Datei Configuration.properties liegt wie die Klasse ConfigTool im Package config.

Inhalt von Configuration.properties:


```
#Configuration
#Sat May 29 19:50:04 CEST 2004
Username=scott
Host=localhost
Password=tiger
DatabaseName=orcl
Database=Oracle 9.2i
DriverClassName=oracle.jdbc.driver.OracleDriver
Port=1521
```

und hier die Klasse ConfigTool


```
/*
 * Created on 29.05.2004
 */
package config;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;

/**
 * @author Administrator
 */
public class ConfigTool {

	public static void main(String[] args) {

		InputStream is =
			ConfigTool.class.getResourceAsStream(
				"/config/Configuration.properties");

		Properties props = new Properties();
		try {
			props.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}

		URL url =
			ConfigTool.class.getResource("/config/Configuration.properties");

		if (url == null)
			return;

		File file = new File(url.getFile());
		
		props.put("New_Entry","Hallo");

		try {
			BufferedOutputStream bos =
				new BufferedOutputStream(new FileOutputStream(file));
			if (bos == null)
				throw new IOException("bos was null");
				
			props.store(bos,"Configuration");
			

		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
```

Vielleicht hilfts dir ja.

Gruß tom


----------



## rosmi (30. Mai 2004)

Danke! Hat wunderbar funktioniert!


----------



## Christian Fein (31. Mai 2004)

*Re: Re: datei laden und wieder speichern*



> _Original geschrieben von Snape _
> *Ich werde auf die Schnelle nicht schlau aus
> *
> 
> ...



Das würde ein Compilerfehler erzeugen, denn du versuchst eine Instanz 
einer Spezialisierten Klasse mit einer  BasisKlasseninstanz  zu instanzieren.

Wenn dann müsste es so  lauten:
FileInputStream inputStream =  new FileInputStream(getClass().getResourceAsStream("/my/package/resource/Config.properties"));

Da FileInputStream einen InputStream aufnehmenden Construktor besitzt.


----------



## Bartleby40K (14. März 2007)

Hallo Zusammen,

ich habe im Moment genau das selbe Problem, nur möchte ich das alles aus einer RCP-Anwendung heraus machen. weiss jemand von euch wie das da funktioniert?
Benutze ich die oben angegebene Lösung bekomme ich immer nur "Das System konnte den angegebenen Pfad nicht finden". 

Greetz

Bartleby40K


----------

