[java] Java에서 Temp 파일을 만드는 안전한 방법은 무엇입니까?

Java에서 임시 파일을 만드는 안전한 방법을 찾고 있습니다. 안전하다는 것은 다음을 의미합니다.

  • 이름은 잠재적 인 경쟁 조건에서도 고유해야합니다 (예 : 다른 스레드가 동시에 동일한 기능을 호출하거나 다른 프로세스가이 코드를 동시에 실행).
  • 잠재적 인 경쟁 조건에서도 파일은 비공개 여야합니다 (예 : 다른 사용자가 높은 속도로 파일을 chmod하려고 시도).
  • 일반 삭제를 수행 할 필요없이 파일을 삭제하도록 지시 할 수 있으며 잘못된 파일을 삭제할 위험이 있습니다.
  • 이상적으로는 예외가 발생하더라도 파일이 삭제되었는지 확인해야합니다.
  • 파일의 기본값은 정상적인 위치 여야합니다 (예 : JVM에서 지정한 tmp dir, 기본값은 시스템 temp dir).



답변

사용 File.createTempFile().

File tempFile = File.createTempFile("prefix-", "-suffix");
//File tempFile = File.createTempFile("MyAppName-", ".tmp");
tempFile.deleteOnExit();

다음과 같이 임시 디렉토리에 파일을 생성합니다.

prefix-6340763779352094442- 접미사


답변

Java 7부터는 temnp 파일과 디렉토리를 생성하기위한 새로운 메소드를 포함하는 새로운 파일 API “NIO2″가 있습니다. 보다

예 :

Path tempDir = Files.createTempDirectory("tempfiles");

또는

Path tempFile = Files.createTempFile("tempfiles", ".tmp");


답변

String tempfilePath = System.getProperty("java.io.tmpdir");
tempfilePath = tempfilePath.concat("filename.extension");

접두사가 필요하지 않습니다.


답변