it-swarm.com.de

Wann gibt System.getProperty ("Java.io.tmpdir") "c:\temp" zurück

Nur neugierig, wann System.getProperty("Java.io.tmpdir")"c:\temp" zurückgibt. Entsprechend der Java.io.FileJava Docs

Das Standardverzeichnis für temporäre Dateien wird durch die Systemeigenschaft Java.io.tmpdir angegeben. Auf UNIX-Systemen lautet der Standardwert dieser Eigenschaft normalerweise "/ tmp" oder "/ var/tmp". Auf Microsoft Windows-Systemen ist dies normalerweise "c:\temp". Wenn diese virtuelle Java-Maschine aufgerufen wird, kann dieser Systemeigenschaft ein anderer Wert zugewiesen werden. Es ist jedoch nicht garantiert, dass programmgesteuerte Änderungen an dieser Eigenschaft Auswirkungen auf das von dieser Methode verwendete temporäre Verzeichnis haben.

Aber in meinem Fall 

System.out.println(System.getProperty("Java.io.tmpdir"));

Immer zurück-

C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%

Unter welchen Bedingungen wird "c:\temp" zurückgegeben? 

BEARBEITET: Wenn ich% TEMP% in C:\Temp ändere, bekomme ich C:\Temp, oder? Die Dokumentation zeigt jedoch c:\Temp anstelle von C:\Temp. 

87
Ashish Pancholi

In MS Windows wird das temporäre Verzeichnis durch die Umgebungsvariable TEMP festgelegt. In XP wurde das temporäre Verzeichnis pro Benutzer als Lokale Einstellungen\Temp festgelegt.

Wenn Sie Ihre TEMP-Umgebungsvariable in C:\temp ändern, erhalten Sie dasselbe, wenn Sie Folgendes ausführen:

System.out.println(System.getProperty("Java.io.tmpdir"));

118

Wenn du eingestellt hast

-Djava.io.tmpdir=C:\temp
29
Peter Lawrey

Einerseits ruft Java beim Aufruf der System.getProperty("Java.io.tmpdir")-Anweisung die Funktion GetTempPath..__ der Win32-API auf. Gemäß der MSDN :

Die GetTempPath-Funktion prüft, ob eine Umgebung vorhanden ist Variablen in der folgenden Reihenfolge und verwendet den ersten gefundenen Pfad:

  1. Der durch die TMP-Umgebungsvariable angegebene Pfad.
  2. Der durch die Umgebungsvariable TEMP angegebene Pfad.
  3. Der durch die Umgebungsvariable USERPROFILE angegebene Pfad.
  4. Das Windows-Verzeichnis.

Überprüfen Sie auf der anderen Seite die historischen Gründe, warum TMP und TEMP nebeneinander existieren . Es lohnt sich wirklich zu lesen.

25
Zakaria

Der Wert der Umgebungsvariable %TEMP% ist häufig benutzerspezifisch und wird von Windows in Bezug auf das aktuell angemeldete Benutzerkonto eingerichtet. Einige Benutzerkonten verfügen möglicherweise über kein Benutzerprofil, z. B. wenn Ihr Prozess als Dienst unter SYSTEM, LOCALSYSTEM oder einem anderen integrierten Konto ausgeführt wird oder von der Anwendung IIS mit der AppPool-Identität mit Benutzerprofil erstellen aufgerufen wird. Option deaktiviert. Selbst wenn Sie die %TEMP%-Variable nicht explizit überschreiben, kann Windows c:\temp- oder sogar c:\windows\temp-Ordner für nicht gewöhnliche Benutzerkonten verwenden. Und was noch wichtiger ist, Prozess hat möglicherweise keine Zugriffsrechte auf dieses Verzeichnis!

0
Maciek