我有一个java应用程序,我使用javaMail API发送由其他实用程序java类生成的附件。 有没有办法创建一个临时文件夹,在使用java 1.6版本发送它之前保存这些附件?
答案 0 :(得分:1)
您可以使用File.createTempFile
创建临时目录(取决于您的平台)的临时文件,但是无法以类似的方式创建临时目录。
您应修改生成代码以改为创建临时文件,然后传递File
个对象。
答案 1 :(得分:0)
Google Guava有Files.createTempDir()
方法,解释here。
/** Maximum loop count when creating temp directories. */
private static final int TEMP_DIR_ATTEMPTS = 10000;
public static File createTempDir() {
File baseDir = new File(System.getProperty("java.io.tmpdir"));
String baseName = System.currentTimeMillis() + "-";
for (int counter = 0; counter < TEMP_DIR_ATTEMPTS; counter++) {
File tempDir = new File(baseDir, baseName + counter);
if (tempDir.mkdir()) {
return tempDir;
}
}
throw new IllegalStateException("Failed to create directory within " + TEMP_DIR_ATTEMPTS + " attempts (tried " + baseName + "0 to " + baseName + (TEMP_DIR_ATTEMPTS - 1) + ')');
}
答案 2 :(得分:0)
标准方法是创建临时文件,然后将其删除,然后将其重新创建为目录。例如,这就是JUnit的TemporaryFolder
规则所做的事情:
File folder= File.createTempFile("junit", "");
folder.delete();
folder.mkdir();
但是,这不是线程安全的,因为其他东西可以在delete()
和mkdir()
调用之间创建相同的文件,这将导致此代码失败。