SRobertJames
SRobertJames

Reputation: 9198

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

I'm looking for a safe way to create a temp file in Java. By safe, I mean the following:

Upvotes: 181

Views: 178095

Answers (2)

Tim Büthe
Tim Büthe

Reputation: 63734

NIO.2

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

Modern Use default temp folder Specify folder
Create folder Files.createTempDirectory Files.createTempDirectory
Create file Files.createTempFile Files.createTempFile

e.g.

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

or

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

For more info:

Legacy

Before Java 7, you might use the legacy methods createTempFile found on the File class. Notice the name “File” is singular, in contrast to the Files class in modern NIO.2.

Legacy Use default temp folder Specify folder
Create folder
Create file File.createTempFile File.createTempFile

Security note

An 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.

Upvotes: 76

Stefan
Stefan

Reputation: 12453

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

Upvotes: 231

Related Questions