What is a safe way to create a Temp file in Java?

Use File.createTempFile().

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

Will create a file in the temp dir, like:

prefix-6340763779352094442-suffix


Since Java 7 there is the new file API "NIO2" which contains new methods for creating temnp files and directories. See

  • createTempDirectory
  • createTempDirectory
  • createTempFile
  • createTempFile

e.g.

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

or

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

Security notice:

Important difference between File.createTempFile() and Files.createTempFile is also that the latter has more secure permission defaults.

When no file attributes are specified, then the resulting file may have more restrictive access permissions to files created by the File.createTempFile(String,String,File) method.