source

System.getProperty("java.io.tmpdir")는 언제 "c:\tempdir"를 반환합니까?

itover 2022. 12. 31. 16:37
반응형

System.getProperty("java.io.tmpdir")는 언제 "c:\tempdir"를 반환합니까?

언제가 좋을지 궁금해서System.getProperty("java.io.tmpdir")돌아온다"c:\temp" java.io에 따르면.FileJava 문서 -

기본 임시 파일 디렉토리는 시스템 속성 java.io.tmpdir에 의해 지정됩니다.UNIX 시스템에서는 이 속성의 기본값은 보통 "/tmp" 또는 "/var/tmp"입니다.Microsoft Windows 시스템에서는 일반적으로 "c:\temp"입니다.Java 가상 시스템이 호출될 때 이 시스템 속성에 다른 값을 지정할 수 있지만 이 속성에 대한 프로그램 변경 사항이 이 메서드에서 사용되는 임시 디렉토리에 영향을 미치지 않을 수 있습니다.

하지만 내 경우엔..

System.out.println(System.getProperty("java.io.tmpdir"));

항상 되돌아가다-

C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%

어떤 상태로 돌아올까요?"c:\temp"?

편집: %TEMP%를 C로 변경하는 경우:\Temp 그러면 C:\Temp 맞죠?그러나 문서에는 c:C 대신 \Temp:\Temp.

MS Windows에서 임시 디렉토리는 환경 변수에 의해 설정됩니다.TEMPXP에서는 사용자별로 임시 디렉토리가 Local Settings\로 설정되었습니다.임시직

TEMP 환경변수를 다음과 같이 변경하는 경우C:\temp를 실행하면 다음과 같이 표시됩니다.

System.out.println(System.getProperty("java.io.tmpdir"));

설정했을 경우

-Djava.io.tmpdir=C:\temp

한편으로, 당신이 전화할 때System.getProperty("java.io.tmpdir")명령, Java는 Win32 API의 함수를 호출합니다.GetTempPathMSDN에 따르면:

GetTempPath 함수는 다음 순서로 환경변수의 존재를 확인하고 발견된 첫 번째 경로를 사용합니다.

  1. TMP 환경변수에 의해 지정된 경로.
  2. TEMP 환경변수로 지정된 경로입니다.
  3. USERPROFILE 환경변수로 지정된 경로입니다.
  4. Windows 디렉토리.

한편, 그 이유와 공존의 역사적 이유를 확인해 주세요.정말 읽을 가치가 있어요.

가치%TEMP%환경변수는 종종 사용자마다 다르며 Windows는 현재 로그인한 사용자 계정에 대해 환경변수를 설정합니다.일부 사용자 계정에는 사용자 프로파일이 없을 수 있습니다. 예를 들어 프로세스가 서비스로 실행되는 경우SYSTEM,LOCALSYSTEM또는 AppPool ID가 비활성화되어 있는 IIS 응용 프로그램에서 호출되며 사용자 프로파일 생성 옵션이 비활성화되어 있습니다.따라서 덮어쓰지 않더라도%TEMP%Windows 에서는, 명시적으로 변수를 사용할 수 있습니다.c:\temp또는 심지어c:\windows\temp폴더는 예를 들어 비사용자 계정의 폴더입니다.그리고 더 중요한 것은 프로세스에 이 디렉토리에 대한 액세스 권한이 없을 수 있다는 것입니다.

언급URL : https://stackoverflow.com/questions/16352326/when-does-system-getpropertyjava-io-tmpdir-return-c-temp

반응형