我正在寻找一种万无一失的方法来生成一个临时文件,该文件在每个 JVM 的基础上总是以唯一的名称结束。基本上,我想确保在多线程应用程序中,如果两个或多个线程试图在完全相同的时间创建一个临时文件,它们最终都会得到一个唯一的临时文件,并且不会抛出异常。
这是我目前的方法:
public File createTempFile(InputStream inputStream) throws FileUtilsException {
File tempFile = null;
OutputStream outputStream = null;
try {
tempFile = File.createTempFile("app", ".tmp");
tempFile.deleteOnExit();
outputStream = new FileOutputStream(tempFile);
IOUtils.copy(inputStream, outputStream);
} catch (IOException e) {
logger.debug("Unable to create temp file", e);
throw new FileUtilsException(e);
} finally {
try { if (outputStream != null) outputStream.close(); } catch (Exception e) {}
try { if (inputStream != null) inputStream.close(); } catch (Exception e) {}
}
return tempFile;
}
这对于我的目标是完全安全的吗?我查看了以下 URL 中的文档,但我不确定。