# Datei temporär speichern



## klofisch (26. Mrz 2006)

Hallo,

ich möchte eine XML-Datei temporär speichern um sie als Anhang per Email zu verschicken.

Wie kann ich auf das Temp-Verzeichniss im Windows-Ordner zugreifen? Kann ich mit JAVA auf allgemeine Pfade wie %SYSTEMROOT%\Temp zugreifen? 


Gruß
Peter


----------



## Illuvatar (26. Mrz 2006)

File.createTempFile

System.getProperty ("java.io.tmpdir")


----------



## klofisch (26. Mrz 2006)

Würde das nicht eine Datei mit der Endung TMP erzeugen?


----------



## byte (26. Mrz 2006)

- edited - 

das war käse. siehe Illuvatar


----------



## Illuvatar (26. Mrz 2006)

File.createTempFile (String prefix, *String suffix*)

```
File.createTempFile ("test", ".xml");
```
ergibt+erzeugt test[5 stellige Zahl].xml im Standard-Temp-Ordner.
Und wenn man nichts weiteres sagt, wird das auch nicht gelöscht oder so.
Und wenn man das nicht brauchen kann, mache man es sich mit dem zweiten Vorschlag meinerseits selber


----------



## klofisch (28. Mrz 2006)

DAnke,....aber leider geht es nicht. Der Compiler gibt zwar keine Fehler zurück, jedoch erscheint keine Datei im Standart-Temp-Ordner.


```
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Text;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class test1 {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws FileNotFoundException, IOException {

		Document doc = new Document();

		Element elRoot = new Element("Branche");

		Element elkennzahl = new Element("Kennzahl");

		elkennzahl.setAttribute("Name", "Muellverbrennung");

		Element value = new Element("Wert");
		value.setAttribute("ms", "");
		elkennzahl.addContent(value);
		elkennzahl.addContent((Element)new Element("author").addContent(new Text("Mark Wuttka")));

		elRoot.addContent(elkennzahl);
		Element result = new Element("Result");
		result.setAttribute("value", "3");
		value.addContent(result);


		doc.setRootElement(elRoot);


		Format format = Format.getPrettyFormat();
		format.setEncoding("iso-8859-1");

		XMLOutputter xmlOut = new XMLOutputter(format);


		xmlOut.output(doc, new FileOutputStream("c:\\test.xml")));

	}
	

}
```

Was muss ich ändern?


----------



## Dukel (28. Mrz 2006)

klofisch hat gesagt.:
			
		

> DAnke,....aber leider geht es nicht. Der Compiler gibt zwar keine Fehler zurück, jedoch erscheint keine Datei im Standart-Temp-Ordner.
> [...]
> Was muss ich ändern?



OT: Standard aufhören mit "t" zu schreiben.

xmlOut.output(doc, new FileOutputStream("c:\\test.xml")));  damit speicherst du auch nicht im Temp Verz. sondern auf c:\. Liegt da die Datei? Wenn ja, den Pfad ändern, wenn nein, dann nochmal nachfragen.


----------



## bygones (28. Mrz 2006)

wie sollte etwas im tmp ordner stehen, wenn du nirgends in deinem Code das beschreibst ?

du hast nirgends die createTempFile wie sie oben erwähnt wurde.....


----------



## mikachu (28. Mrz 2006)

gehört dieser Thread nicht in XML & Co. ???


----------



## Eminent (28. Mrz 2006)

mika hat gesagt.:
			
		

> gehört dieser Thread nicht in XML & Co. ???



Nö hier soll eine Datei (zufällig XML) irgendwie temporär gespeichert werden. Denke das ist hier schon richtig.


----------



## norman (28. Mrz 2006)

mika hat gesagt.:
			
		

> gehört dieser Thread nicht in XML & Co. ???


nein


----------



## mikachu (28. Mrz 2006)

na gut, aber es ist doch alles klar... es ist klar, wie man nen temp. file erzeugt, wo es das erzeugt.
klofisch müsste nur noch seinen sourcecode anpassen und dann würdes funzen... oder seh ich das falsch ?!? ???:L


----------



## klofisch (28. Mrz 2006)

Ich hab jetzt die letzten Zeilen des Codes so abgeändert


```
xmlOut.output(doc, new FileOutputStream(File.createTempFile ("test", ".xml")));
		System.getProperty ("java.io.tmpdir");
```

Leider hilft das auch nicht.


----------



## bygones (28. Mrz 2006)

klar 

einfach Illus Code so abschreiben bringt nix....

getProperty gibt dir einen String zurück - der Pfad zu dem tmp directory.. du nutzt es nicht

du erstellst in deinem Projektverzeichnis eine tmp datei und schreibst dann darein.

für dich ist http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#createTempFile(java.lang.String, java.lang.String, java.io.File) interessant


----------



## Murray (28. Mrz 2006)

deathbyaclown hat gesagt.:
			
		

> du erstellst in deinem Projektverzeichnis eine tmp datei und schreibst dann darein.



Stimmt so m.E. nicht ganz: lt. API ist File#createTempFile( String, String) identisch mit File#createTempFile( String, String, null), was wiederum intern das gleiche macht wie File#createTempFile( String, String, System.getProperty( "java.io.tmpdir"))


----------



## klofisch (28. Mrz 2006)

ok es klappt,...aber nciht so wie ich es mir gedacht habe aber doch ok. Die Datei wurde nicht unter 
Windows\Temp 

sondern in 

C:\Dokumente und Einstellungen\<username>\Lokale Einstellungen\Temp 

ausgeben. Es hat übrigens schon ca 20x geklappt,....


```
String tdir = System.getProperty ("java.io.tmpdir");

		System.out.println(tdir); // <- darauf hätte ich aber auch mal früher kommen können

		xmlOut.output(doc, new FileOutputStream(tdir+"\\kzahl.xml"));
```

Vielen Dank
Peter


----------



## mikachu (28. Mrz 2006)

da schließt sich mir gleich ncoh eine frage an, welche ich in meinen windoof-zeiten mir gewünscht hab...

gibt es irgendwie die möglichkeit, den pfad für die TMP-env zu setzen ?


----------



## Eminent (29. Mrz 2006)

mika hat gesagt.:
			
		

> da schließt sich mir gleich ncoh eine frage an, welche ich in meinen windoof-zeiten mir gewünscht hab...
> 
> gibt es irgendwie die möglichkeit, den pfad für die TMP-env zu setzen ?



Ich weiß ganz offen gestanden nicht was TMP-env heißen soll! *schäm* Aber du kannst unter Windows (kann jetzt leider nur von 2000 reden) den TMP und den TEMP-Pfad einstellen.

Rechtsklick Arbeitsplatz --> Eigenschaften --> Erweitert --> Umgebungsvariablen --> HIER   

Dort kannst du dann die Variablen TEMP und TMP setzen. Denke das sollte gehen. Hab leider nicht genügend Rechte um das hier auszuprobieren.


----------

