Ich bin nur neugierig, wann System.getProperty("java.io.tmpdir")
ich zurückkomme "c:\temp"
. Laut java.io.File Java 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". Diese Systemeigenschaft kann einen anderen Wert erhalten, wenn die Java Virtual Machine aufgerufen wird. Es ist jedoch nicht garantiert, dass programmatische Ä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 es zurückkehren "c:\temp"
?
BEARBEITET: Wenn ich% TEMP% in C: \ Temp ändere, erhalte ich C: \ Temp, richtig? Die Dokumentation zeigt jedoch c: \ Temp anstelle von C: \ Temp.
C:\Temp
indem Sie% TEMP% ändern, Windows 98 installieren oder an übergebenjava -Djava.io.tmpdir=C:\Temp
. Überprüfen Sie auch dies: stackoverflow.com/questions/3437095/…C:\Temp
bekomme ichC:\Temp
. Richtig? aber doc showc:\Temp
stattC:\Temp
. :)"C:\\WINNT\\TEMP"
.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 in ändern
C:\temp
, erhalten Sie beim Ausführen Folgendes:System.out.println(System.getProperty("java.io.tmpdir"));
quelle
TMP
env var festgelegt hat,TEMP
wird die ignoriert. Bitte beziehen Sie sich auf meine Antwort und lassen Sie mich wissen, wenn Sie nicht verstanden haben, was ich meine.Wenn Sie einstellen
quelle
Einerseits
System.getProperty("java.io.tmpdir")
ruft Java beim Aufrufen von Anweisungen die Funktion der Win32-API aufGetTempPath
. Laut MSDN :Auf der anderen Seite überprüfen Sie bitte die historischen Gründe, warum
TMP
undTEMP
koexistieren . Es ist wirklich lesenswert.quelle
Der Wert der
%TEMP%
Umgebungsvariablen ist häufig benutzerspezifisch und wird von Windows in Bezug auf das aktuell angemeldete Benutzerkonto eingerichtet. Einige Benutzerkonten können kein Benutzerprofil haben, zum Beispiel , wenn Ihr Prozess läuft als Dienst aufSYSTEM
,LOCALSYSTEM
oder andere integrierte Konten oder durch II - Anwendung mit AppPool Identität aufgerufen mit Benutzerprofil erstellen deaktiviert Option. Selbst wenn Sie%TEMP%
Variablen nicht explizit überschreiben , verwendet Windows möglicherweise Ordnerc:\temp
oder sogarc:\windows\temp
Ordner für beispielsweise nicht übliche Benutzerkonten. Und was noch wichtiger ist, der Prozess hat möglicherweise keine Zugriffsrechte auf dieses Verzeichnis!quelle