Apenas curioso para System.getProperty("java.io.tmpdir")
saber quando voltará "c:\temp"
. De acordo com o java.io.File Java Docs -
O diretório de arquivo temporário padrão é especificado pela propriedade do sistema java.io.tmpdir. Em sistemas UNIX, o valor padrão desta propriedade é geralmente "/ tmp" ou "/ var / tmp"; em sistemas Microsoft Windows, normalmente é "c: \ temp". Um valor diferente pode ser fornecido a esta propriedade do sistema quando a máquina virtual Java é chamada, mas as mudanças programáticas nesta propriedade não têm garantia de nenhum efeito sobre o diretório temporário usado por este método.
Mas no meu caso-
System.out.println(System.getProperty("java.io.tmpdir"));
Sempre retorna-
C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
Em que condições ele retornará "c:\temp"
?
EDITADO: Se eu alterar% TEMP% para C: \ Temp, obterei C: \ Temp, certo? Mas a documentação mostra c: \ Temp em vez de C: \ Temp.
C:\Temp
alterando% TEMP%, instalando o Windows 98 ou passando parajava -Djava.io.tmpdir=C:\Temp
. Verifique também: stackoverflow.com/questions/3437095/…C:\Temp
então, irei obterC:\Temp
. Certo? mas doc mostra emc:\Temp
vez deC:\Temp
. :)"C:\\WINNT\\TEMP"
.Respostas:
No MS Windows, o diretório temporário é definido pela variável de ambiente
TEMP
. No XP, o diretório temporário era definido por usuário como Configurações locais \ Temp.Se você alterar sua variável de ambiente TEMP para
C:\temp
, obterá o mesmo ao executar:System.out.println(System.getProperty("java.io.tmpdir"));
fonte
TMP
env var, oTEMP
será ignorado. Por favor, consulte minha resposta e deixe-me saber se você não entendeu o que quero dizer.Se você definir
fonte
Por um lado, quando você chama a
System.getProperty("java.io.tmpdir")
instrução, Java chama a função da API do Win32GetTempPath
. De acordo com o MSDN :Por outro lado, verifique as razões históricas sobre o porquê
TMP
eTEMP
coexistem . Vale muito a pena ler.fonte
O valor da
%TEMP%
variável de ambiente geralmente é específico do usuário e o Windows o configura em relação à conta do usuário conectado no momento. Algumas contas de usuário não pode ter nenhum perfil de usuário, por exemplo, quando as corridas processo como um serviço onSYSTEM
,LOCALSYSTEM
ou outra conta interna, ou é chamado pelo aplicativo IIS com a identidade AppPool com perfil de usuário Criar opção desabilitada. Portanto, mesmo quando você não sobrescreve a%TEMP%
variável explicitamente, o Windows pode usarc:\temp
ou até mesmoc:\windows\temp
pastas para, digamos, contas de usuário incomuns. E o que é mais importante, o processo pode não ter direitos de acesso a este diretório!fonte