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:\Tempcambiando% TEMP%, instalando Windows 98 o pasándolo ajava -Djava.io.tmpdir=C:\Temp. TambiénC:\Temp, obtendréC:\Temp. ¿Correcto? pero doc show enc:\Templugar 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
TMPvar env,TEMPse 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é
TMPyTEMPconviven . 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,LOCALSYSTEMu 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:\tempo inclusoc:\windows\tempcarpetas 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