有没有一种在Java应用程序中创建临时目录的标准且可靠的方法?有an entry in Java's issue database个,在注释中有一些代码,但我想知道在一个常用的库(Apache Commons等)中是否有标准的解决方案?

推荐答案

如果您使用的是JDK 7,请使用新的Files.createTempDirectory类来创建临时目录.

Path tempDirWithPrefix = Files.createTempDirectory(prefix);

在JDK 7之前,应该这样做:

public static File createTempDirectory()
    throws IOException
{
    final File temp;

    temp = File.createTempFile("temp", Long.toString(System.nanoTime()));

    if(!(temp.delete()))
    {
        throw new IOException("Could not delete temp file: " + temp.getAbsolutePath());
    }

    if(!(temp.mkdir()))
    {
        throw new IOException("Could not create temp directory: " + temp.getAbsolutePath());
    }

    return (temp);
}

如果需要,可以创建更好的异常(子类IOException).

Java相关问答推荐

具有默认分支的JUnit代码覆盖率切换声明

gitlab ci不会运行我的脚本,因为它需要数据库连接'

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

流迭代列表<;对象>;上的NoSuchElementException

如何让JFileChooser(DIRECTORIES_ONLY)从FolderName中的空白开始?

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

当Volatile关键字真的是必要的时候?

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

S,要对Java复制构造函数深度克隆所有属性进行单元测试,最可靠的方法是什么?

如何在我的世界中为互动增加冷却时间?

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

在应用程序运行时更改LookAndFeel

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

在单例类上获取Java锁,了解原因

将基于实例编号的对象列表拆分为新的对象列表

JOOQ:批处理CRUD操作使用动态表定义,如何?

如何以事务方式向ibmmq发送消息

使用Java线程进行并行编程

javax.crypto-密码对象-提供者服务是如何工作的?

如何使用Jackson读取以方括号开头的JSON?