Java文件操作之创建常规文件与临时文件

 更新时间:2026年05月05日 08:58:52   作者:Cache技术分享  
这篇文章主要介绍了Java NNIO.中的Files.createFile()与Files.createTempFile()方法,用于创建常规文件和临时文件,总结了两种方法的特点、使用场景与区别,需要的朋友可以参考下

1. 创建常规文件createFile()

Java NIO.2 中,你可以用 Files.createFile(Path, FileAttribute<?>...) 来创建一个空文件。

  • 特点
    • 如果文件已存在 → 抛出 FileAlreadyExistsException(避免覆盖,保证安全性 ✅)。
    • 支持 一次性原子操作:检查文件是否存在 + 创建文件 → 防止并发或恶意代码插入。
    • 可以指定文件的 初始属性(例如 POSIX 文件权限)。

示例:创建一个新文件(默认属性)

import java.nio.file.*;
import java.io.IOException;

public class CreateFileDemo {
    public static void main(String[] args) {
        Path file = Paths.get("example.txt");
        try {
            Files.createFile(file);
            System.out.println("文件创建成功: " + file.toAbsolutePath());
        } catch (FileAlreadyExistsException e) {
            System.err.println("文件已存在: " + file);
        } catch (IOException e) {
            System.err.println("创建文件失败: " + e.getMessage());
        }
    }
}

运行结果(文件不存在时):

文件创建成功: /path/to/example.txt

如果文件已存在:

文件已存在: example.txt

2. 创建临时文件createTempFile()

有时候我们需要一个 临时文件(例如写缓存、处理临时数据、测试用文件),这时就用 Files.createTempFile()

  • 方法重载
    1. createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>...) → 允许指定目录、文件前缀、后缀。
    2. createTempFile(String prefix, String suffix, FileAttribute<?>...) → 使用默认的 临时文件目录(不同系统目录不同,比如 Linux 通常是 /tmp/)。
  • 文件命名规则: 系统会自动在文件名里加上一个 随机数,保证唯一性。

示例:创建临时文件(默认目录)

import java.nio.file.*;
import java.io.IOException;

public class TempFileDemo {
    public static void main(String[] args) {
        try {
            Path tempFile = Files.createTempFile("myapp_", ".tmp");
            System.out.println("临时文件已创建: " + tempFile.toAbsolutePath());
        } catch (IOException e) {
            System.err.println("创建临时文件失败: " + e.getMessage());
        }
    }
}

运行结果(Linux 下可能是):

临时文件已创建: /tmp/myapp_1234567890.tmp

Windows 下可能是:

临时文件已创建: C:\Users\yaoxin\AppData\Local\Temp\myapp_987654321.tmp

总结

  1. 对比 createFile()createTempFile()
    • createFile() → 需要指定路径,文件名固定,如果存在会报错。
    • createTempFile() → 自动生成不重复的文件名,适合做临时数据存储。
  2. 安全性
    • createFile()原子操作 避免了“检查-再创建”中可能被恶意程序插入的漏洞。
    • 临时文件常用于多线程/多进程场景,避免命名冲突。
  3. 实际应用场景
    • createFile() → 初始化配置文件、日志文件、导出文件等。
    • createTempFile() → 大数据处理中间文件、Web 服务的缓存文件、测试时的临时文件。

以上就是Java文件操作之创建常规文件与临时文件的详细内容,更多关于Java创建常规文件与临时文件的资料请关注脚本之家其它相关文章!

相关文章

  • java -jar指定spring配置文件完整示例

    java -jar指定spring配置文件完整示例

    这篇文章主要介绍了java -jar指定spring配置文件的相关资料,通过示例讲解了激活dev profile、设置外部配置路径、直接指定配置文件名,需要的朋友可以参考下
    2025-06-06
  • SpringBoot实现多数据源配置的示例详解

    SpringBoot实现多数据源配置的示例详解

    这篇文章主要为大家详细介绍了SpringBoot实现多数据源配置的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • Java编程Webservice指定超时时间代码详解

    Java编程Webservice指定超时时间代码详解

    这篇文章主要介绍了Java编程Webservice指定超时时间代码详解,简单介绍了webservice,然后分享了通过使用JDK对Webservice的支持进行Webservice调用实现指定超时时间完整示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • Java之操作Redis案例讲解

    Java之操作Redis案例讲解

    这篇文章主要介绍了Java之操作Redis案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 在启动后台 jar包时,使用指定的 application.yml操作

    在启动后台 jar包时,使用指定的 application.yml操作

    这篇文章主要介绍了在启动后台 jar包时,使用指定的 application.yml操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Spring5源码解析之Spring中的异步和计划任务

    Spring5源码解析之Spring中的异步和计划任务

    本篇文章主要介绍了Spring5源码解析之Spring中的异步和计划任务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-10-10
  • Spring自定义注解实现接口版本管理

    Spring自定义注解实现接口版本管理

    这篇文章主要介绍了Spring自定义注解实现接口版本管理,RequestMappingHandlerMapping类是与 @RequestMapping相关的,它定义映射的规则,即满足怎样的条件则映射到那个接口上,需要的朋友可以参考下
    2023-11-11
  • Java工具类之@RequestMapping注解

    Java工具类之@RequestMapping注解

    今天带大家来学习Java工具类,文中对注解@RequestMapping作了非常详细的介绍,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 详解springboot springsecuroty中的注销和权限控制问题

    详解springboot springsecuroty中的注销和权限控制问题

    这篇文章主要介绍了springboot-springsecuroty 注销和权限控制,账户注销需要在SecurityConfig中加入开启注销功能的代码,权限控制要导入springsecurity和thymeleaf的整合依赖,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • SpringBoot中@Data注解的深度解析与实战应用

    SpringBoot中@Data注解的深度解析与实战应用

    @Data是Lombok库提供的一个核心注解,它通过简化Java开发中常见的样板代码来显著提高开发效率,下面小编就为大家详细介绍一下@Data注解的详细使用吧
    2025-10-10

最新评论