28 lines
791 B
Plaintext
28 lines
791 B
Plaintext
![]() |
Using ``File.createTempFile`` as the first step in creating a temporary directory causes a race condition and is inherently unreliable and insecure. Instead, ``Files.createTempDirectory`` (Java 7+) should be used.
|
||
|
|
||
|
This rule raises an issue when the following steps are taken in immediate sequence:
|
||
|
|
||
|
* call to ``File.createTempFile``
|
||
|
* delete resulting file
|
||
|
* call ``mkdir`` on the File object
|
||
|
|
||
|
*Note* that this rule is automatically disabled when the project's ``sonar.java.source`` is lower than ``7``.
|
||
|
|
||
|
== Noncompliant Code Example
|
||
|
|
||
|
----
|
||
|
File tempDir;
|
||
|
tempDir = File.createTempFile("", ".");
|
||
|
tempDir.delete();
|
||
|
tempDir.mkdir(); // Noncompliant
|
||
|
----
|
||
|
|
||
|
== Compliant Solution
|
||
|
|
||
|
----
|
||
|
Path tempPath = Files.createTempDirectory("");
|
||
|
File tempDir = tempPath.toFile();
|
||
|
----
|
||
|
|
||
|
include::../see.adoc[]
|