# Java Projekt in Windows (7): Wohin mit temporären Dateien?



## MJ23 (7. Dez 2016)

Hi,
ich habe endlich mein erstes "größeres" Java-Projekt fertiggestellt. Es besteht aus einer .jar, zugehörigem resources - Folder und einer .exe (mit Launch4J erstellt). Nun habe ich auch erfolgreich mit dem Inno Setup Compiler eine Installationsroutine erstellt, die das Projekt auch richtig, in Windows standardmäßig unter C:\Program Files\, entpackt. Das Problem ist nur, dass man meine Dateien (.txt), in denen ich Objekte speichere, nur lesen, aber nicht ändern kann.
Liegt das Projekt auf einem anderen Verzeichnis/Laufwerk, z.B. D:, funktioniert alles einwandfrei, also ist es kein Fehler in meiner Anwendung o.ä.

Meine Frage lautet deshalb: Wo müssen meine Dateien hin um sie ändern zu können, und wie bekomme ich das mit der Installation hin?

Grüße MJ23


----------



## Joose (7. Dez 2016)

Das ist ein Berechtigungsproblem.
Dateien die verändert werden zur Laufzeit sollten in den Anwendungsdaten ablegt werden.
http://stackoverflow.com/questions/...-way-to-find-the-users-home-directory-in-java


----------



## Neumi5694 (11. Jul 2017)

User-Temp-Verzeichnis:

```
System.getenv("TEMP")
```

Es geht allerdings auch einfacher. Java hat ein Standard-Verzeichnis für Temp-Dateien und auch eine Standard-Funktion, um sie zu erstellen.

```
File tempFile = File.createTempFile("file", ".tmp")
```
Der Pfad der Datei ist dann z.B. c:\users\DespicableMe\Appdata\Local\Temp\file2695968714895551608.tmp

Mit der generierten Nummer wird gleichzeitig auch sichergestellt, dass es keine zweite Datei mit dem gleichen Namen gibt.
Edit: Selbsterklärend:

```
tempFile.deleteOnExit()
```
Sehr sinnvoll für Temp-Dateien.


----------



## Blender3D (18. Jul 2017)

Unter Windows gibt es die Möglichkeit den jeweiligen Pfad eines Users mittels
SET DESTINATION=%USERLOCATION%\MEINPROGRAMM
als Installationspfad festzulegen, ich mache das bei meinen Projekten immer so mittels einer Batchdatei. Funktioniert sehr gut.
Das temp verszeichnis ist für dauerhafte Daten nicht zu empfehlen.


----------

