397. Java 文件操作基础 - 创建常规文件与临时文件

文章目录

397. Java 文件操作基础 - 创建常规文件与临时文件

✨ 1. 创建常规文件 createFile()

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

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

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

java 复制代码
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());
        }
    }
}

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

java 复制代码
文件创建成功: /path/to/example.txt

👉 如果文件已存在:

java 复制代码
文件已存在: example.txt

✨ 2. 创建临时文件 createTempFile()

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

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

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

java 复制代码
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 下可能是):

java 复制代码
临时文件已创建: /tmp/myapp_1234567890.tmp

👉 Windows 下可能是:

java 复制代码
临时文件已创建: C:\Users\yaoxin\AppData\Local\Temp\myapp_987654321.tmp

🎤 总结

  1. 对比 createFile()createTempFile()
    • createFile() → 需要指定路径,文件名固定,如果存在会报错。
    • createTempFile() → 自动生成不重复的文件名,适合做临时数据存储。
  2. 安全性
    • createFile()原子操作 避免了"检查-再创建"中可能被恶意程序插入的漏洞。
    • 临时文件常用于多线程/多进程场景,避免命名冲突。
  3. 实际应用场景
    • createFile() → 初始化配置文件、日志文件、导出文件等。
    • createTempFile() → 大数据处理中间文件、Web 服务的缓存文件、测试时的临时文件。
相关推荐
霸道流氓气质11 分钟前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗12 分钟前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
Tanjia_kiki17 分钟前
谷歌浏览器中F12编辑并重发请求
开发语言·前端·javascript
阿童木写作18 分钟前
跨境电商批量图片翻译与视频字幕翻译工具推荐
python·音视频
程序猿编码20 分钟前
基于GGML的C++17轻量化语音推理引擎:说话人识别与语音分析技术全解析
开发语言·c++·pytorch·深度学习·神经网络·大模型
leihefeng26 分钟前
手写数字识别:KNN vs 逻辑回归实战
python·算法·机器学习·逻辑回归·scikit-learn
学长毕业设计32 分钟前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
珍珠先生33 分钟前
P10 · 缺 MySQL 驱动 jar:ClassNotFoundException: com.mysql.cj.jdbc.Driver
java
SunnyDays101138 分钟前
如何使用 Python 从 Word 文档中提取图片
python·word
2601_9620973643 分钟前
Pathway 实时RAG新方案:抛弃Spark、Flink,生产级数据管道
python·流处理·大数据集群·实时rag·pathway