如何使用java 1.6在Java应用程序内创建临时目录?

时间:2014-09-02 15:32:55

标签: java javamail

我有一个java应用程序,我使用javaMail API发送由其他实用程序java类生成的附件。 有没有办法创建一个临时文件夹,在使用java 1.6版本发送它之前保存这些附件?

3 个答案:

答案 0 :(得分:1)

您可以使用File.createTempFile创建临时目录(取决于您的平台)的临时文件,但是无法以类似的方式创建临时目录。

您应修改生成代码以改为创建临时文件,然后传递File个对象。

答案 1 :(得分:0)

Google GuavaFiles.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()调用之间创建相同的文件,这将导致此代码失败。