Juste curieux de savoir quand System.getProperty("java.io.tmpdir")
revient "c:\temp"
. Selon la documentation Java java.io.File -
Le répertoire de fichiers temporaires par défaut est spécifié par la propriété système java.io.tmpdir. Sur les systèmes UNIX, la valeur par défaut de cette propriété est généralement "/ tmp" ou "/ var / tmp"; sur les systèmes Microsoft Windows, il s'agit généralement de "c: \ temp". Une valeur différente peut être donnée à cette propriété système lorsque la machine virtuelle Java est appelée, mais les modifications programmatiques de cette propriété ne sont pas garanties d'avoir un effet sur le répertoire temporaire utilisé par cette méthode.
Mais dans mon cas-
System.out.println(System.getProperty("java.io.tmpdir"));
Revient toujours
C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
Dans quelles conditions reviendra-t-il "c:\temp"
?
EDITED: Si je change% TEMP% en C: \ Temp, j'obtiendrai C: \ Temp, non? Mais la documentation montre c: \ Temp au lieu de C: \ Temp.
C:\Temp
en changeant% TEMP%, en installant Windows 98 ou en le passant àjava -Djava.io.tmpdir=C:\Temp
. Consultez également ceci: stackoverflow.com/questions/3437095/…C:\Temp
alors j'obtiendraiC:\Temp
. Droite? mais doc showc:\Temp
au lieu deC:\Temp
. :)"C:\\WINNT\\TEMP"
.Réponses:
Dans MS Windows, le répertoire temporaire est défini par la variable d'environnement
TEMP
. Sous XP, le répertoire temporaire était défini par utilisateur comme Local Settings \ Temp.Si vous modifiez votre variable d'environnement TEMP en
C:\temp
, vous obtenez la même chose lorsque vous exécutez:System.out.println(System.getProperty("java.io.tmpdir"));
la source
TMP
variable env, alors leTEMP
sera ignoré. S'il vous plaît, référez-vous à ma réponse et faites-moi savoir si vous n'avez pas compris ce que je veux dire.Si vous définissez
la source
D'une part, lorsque vous appelez une
System.getProperty("java.io.tmpdir")
instruction, Java appelle la fonction de l'API Win32GetTempPath
. Selon le MSDN :D'autre part, veuillez vérifier les raisons historiques pour lesquelles
TMP
etTEMP
coexister . Cela vaut vraiment la peine d'être lu.la source
La valeur de
%TEMP%
la variable d'environnement est souvent spécifique à l'utilisateur et Windows la configure en fonction du compte d'utilisateur actuellement connecté. Certains comptes d'utilisateurs peuvent ne pas avoir de profil utilisateur, par exemple lorsque votre processus s'exécute en tant que service surSYSTEM
,LOCALSYSTEM
ou un autre compte intégré, ou est appelé par une application IIS avec l'identité AppPool avec l' option Créer un profil utilisateur désactivée. Ainsi, même lorsque vous n'écrasez pas%TEMP%
explicitement la variable, Windows peut utiliserc:\temp
ou même desc:\windows\temp
dossiers pour, disons, des comptes d'utilisateurs non habituels. Et ce qui est plus important, le processus n'a peut-être aucun droit d'accès à ce répertoire!la source