Solo tengo curiosidad por saber cuándo System.getProperty("java.io.tmpdir")
regresa "c:\temp"
. De acuerdo con java.io.File Java Docs -
El directorio de archivos temporales predeterminado lo especifica la propiedad del sistema java.io.tmpdir. En los sistemas UNIX, el valor predeterminado de esta propiedad suele ser "/ tmp" o "/ var / tmp"; en los sistemas Microsoft Windows suele ser "c: \ temp". Se puede dar un valor diferente a esta propiedad del sistema cuando se invoca la máquina virtual Java, pero no se garantiza que los cambios programáticos a esta propiedad tengan ningún efecto sobre el directorio temporal utilizado por este método.
Pero en mi caso
System.out.println(System.getProperty("java.io.tmpdir"));
Siempre regresa
C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
¿En qué condiciones volverá "c:\temp"
?
EDITADO: Si cambio% TEMP% a C: \ Temp, obtendré C: \ Temp, ¿verdad? Pero la documentación muestra c: \ Temp en lugar de C: \ Temp.
C:\Temp
cambiando% TEMP%, instalando Windows 98 o pasándolo ajava -Djava.io.tmpdir=C:\Temp
. TambiénC:\Temp
, obtendréC:\Temp
. ¿Correcto? pero doc show enc:\Temp
lugar deC:\Temp
. :)"C:\\WINNT\\TEMP"
.Respuestas:
En MS Windows, el directorio temporal lo establece la variable de entorno
TEMP
. En XP, el directorio temporal se estableció por usuario como Configuración local \ Temp.Si cambia su variable de entorno TEMP a
C:\temp
, obtendrá lo mismo cuando ejecute:System.out.println(System.getProperty("java.io.tmpdir"));
fuente
TMP
var env,TEMP
se ignorará. Por favor, consulte mi respuesta y avíseme si no entendió lo que quiero decir.Si pones
fuente
Por un lado, cuando llama a una
System.getProperty("java.io.tmpdir")
instrucción, Java llama a la función de la API de Win32GetTempPath
. Según MSDN :Por otro lado, verifique las razones históricas sobre por qué
TMP
yTEMP
conviven . Realmente vale la pena leerlo.fuente
El valor de
%TEMP%
la variable de entorno es a menudo específico del usuario y Windows lo configura con respecto a la cuenta de usuario actualmente conectada. Algunas cuentas de usuario pueden no tener un perfil de usuario, por ejemplo, cuando su proceso se ejecuta como un servicio enSYSTEM
,LOCALSYSTEM
u otra cuenta incorporada, o es invocado por la aplicación IIS con la identidad de AppPool con la opción Crear perfil de usuario deshabilitada. Entonces, incluso cuando no sobrescribe la%TEMP%
variable explícitamente, Windows puede usarc:\temp
o inclusoc:\windows\temp
carpetas para, digamos, cuentas de usuario no habituales. Y lo que es más importante, es posible que el proceso no tenga derechos de acceso a este directorio.fuente