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


Nur neugierig wann System.getProperty("java.io.tmpdir") kehrt zurück "c:\temp". Entsprechend der java.io.File  Java-Dokumente-

Das Standardverzeichnis für temporäre Dateien wird von der 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". Ein anderer Wert kann dieser Systemeigenschaft zugewiesen werden, wenn die Java Virtual Machine aufgerufen wird. Programmatische Änderungen an dieser Eigenschaft haben jedoch keine Auswirkungen auf das temporäre Verzeichnis, das von dieser Methode verwendet wird.

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 es zurückkehren? "c:\temp"?

EDITED: Wenn ich% TEMP% zu C: \ Temp ändere, bekomme ich C: \ Temp, oder? Aber die Dokumentation zeigt c: \ Temp anstelle von C: \ Temp.


76
2018-05-03 05:40


Ursprung


Antworten:


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

Wenn Sie Ihre TEMP-Umgebungsvariable zu ändern C:\temp, dann bekommst du dasselbe, wenn du rennst:

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


87
2018-05-03 05:50



Wenn Sie einstellen

-Djava.io.tmpdir=C:\temp

27
2018-05-03 05:47



Auf der einen Seite, wenn Sie anrufen System.getProperty("java.io.tmpdir") Anweisung ruft Java die Funktion der Win32-API auf GetTempPath. Gemäß das MSDN :

Die GetTempPath-Funktion überprüft das Vorhandensein von Umgebung   Variablen in der folgenden Reihenfolge und verwendet den ersten gefundenen Pfad:

  1. Der Pfad, der von der TMP-Umgebungsvariablen angegeben wird.
  2. Der Pfad, der von der TEMP-Umgebungsvariablen angegeben wird.
  3. Der Pfad, der von der Umgebungsvariablen USERPROFILE angegeben wird.
  4. Das Windows-Verzeichnis.

Auf der anderen Seite, bitte überprüfen die historischen Gründe warum TMP und TEMP koexistieren. Es ist wirklich lesenswert.


23
2018-04-18 11:40



Wert von %TEMP% Die Umgebungsvariable ist oft benutzerspezifisch und Windows richtet sie in Bezug auf das aktuell angemeldete Benutzerkonto ein. Einige Benutzerkonten haben möglicherweise kein Benutzerprofil, z. B. wenn Ihr Prozess als Dienst ausgeführt wird SYSTEM, LOCALSYSTEM oder ein anderes integriertes Konto oder wird von der IIS-Anwendung mit der AppPool-Identität mit aufgerufen Erstellen Sie ein Benutzerprofil Option deaktiviert. Also auch wenn Sie nicht überschreiben %TEMP% Variable explizit, Windows möglicherweise verwenden c:\temp oder auch c:\windows\temp Ordner für, sagen wir, ungewöhnliche Benutzerkonten. Und was noch wichtiger ist, der Prozess hat möglicherweise keine Zugriffsrechte auf dieses Verzeichnis!


0
2017-10-27 11:36