Java中读写临时文件需先用File.createTempFile()创建磁盘文件,再用Files或流API操作,最后显式调用delete()清理。

Java 中读取和写入临时文件,核心是先创建临时文件(由系统管理路径和生命周期),再用标准 I/O 方式操作它。关键点在于:临时文件不等于内存中的临时数据(如 ByteArrayInputStream),而是真实存在于磁盘、有路径、可被文件流读写的文件。
创建临时文件
使用 File.createTempFile() 是最常用且安全的方式。它会自动在系统默认临时目录(如 /tmp 或 C:\Users\...\AppData\Local\Temp)下生成唯一命名的文件:
-
基础用法:`File temp = File.createTempFile("prefix", ".suffix");` —— 例如
createTempFile("log", ".txt")可能生成/tmp/log123456789.txt - 指定目录:`File temp = File.createTempFile("data", ".bin", new File("/my/temp"));`
-
注意:该方法只创建空文件,不自动删除;需手动调用
deleteOnExit()或显式delete()清理
向临时文件写入内容
创建后,像操作普通文件一样写入。推荐使用 try-with-resources 确保流关闭:
- 用
Files.write()(简洁,适合小文本):
`Files.write(temp.toPath(), "Hello Temp".getBytes(StandardCharsets.UTF_8));` - 用
FileOutputStream或BufferedWriter(适合大文件或逐行写):
`try (BufferedWriter w = Files.newBufferedWriter(temp.toPath(), StandardCharsets.UTF_8)) { w.write("line1\nline2"); }`
从临时文件读取内容
同样支持多种方式,按需选择:
立即学习“Java免费学习笔记(深入)”;
- 一次性读全部(适合小文件):
`String content = Files.readString(temp.toPath(), StandardCharsets.UTF_8);` - 逐行读(避免内存压力):
`try (BufferedReader r = Files.newBufferedReader(temp.toPath(), StandardCharsets.UTF_8)) { String line; while ((line = r.readLine()) != null) { /* 处理 */ } }` - 读为字节数组:
`byte[] bytes = Files.readAllBytes(temp.toPath());`
清理临时文件
临时文件不会自动消失,必须主动管理生命周期:
- 程序退出时删除:`temp.deleteOnExit();` —— 简单但不可靠(JVM 异常终止可能失效)
- 显式删除(推荐):操作完成后立即调用 `if (temp.exists()) temp.delete();`
-
配合 try-finally 或 try-with-resources 自动清理:
`try { /* 写/读操作 */ } finally { if (temp.exists()) temp.delete(); }`


















