Reputation: 9198
I'm looking for a safe way to create a temp file in Java. By safe, I mean the following:
Upvotes: 181
Views: 178095
Reputation: 63734
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:
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 |
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
Reputation: 12453
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