File tempDir;
tempDir = File.createTempFile("mda", ".temp");
tempDir.delete();
tempDir.mkdir(); // Noncompliant
上面的代码将生成一个词典,例如'mda3249275551502192003.temp',但是它将首先生成文件,然后删除该文件。我遇到类似“使用File.createTempFile作为创建临时目录的第一步的声纳问题”,这会导致争用情况,并且本质上是不可靠和不安全的。相反,Files.createTempDirectory(Java 7+)或类似Guava的库函数类似,应该使用名为Files.createTempDir的文件。”建议的解决方案如下。但是createTempDirectory只接受前缀并生成类似“ mda3249275551502192003”的内容,但是我想要“ mda3249275551502192003.temp”
Compliant Solution
Path tempPath = Files.createTempDirectory("mda");
File tempDir = tempPath.toFile();