Java文件操作之創(chuàng)建常規(guī)文件與臨時(shí)文件
1. 創(chuàng)建常規(guī)文件createFile()
在 Java NIO.2 中,你可以用 Files.createFile(Path, FileAttribute<?>...) 來創(chuàng)建一個(gè)空文件。
- 特點(diǎn):
- 如果文件已存在 → 拋出
FileAlreadyExistsException(避免覆蓋,保證安全性 ?)。 - 支持 一次性原子操作:檢查文件是否存在 + 創(chuàng)建文件 → 防止并發(fā)或惡意代碼插入。
- 可以指定文件的 初始屬性(例如
POSIX文件權(quán)限)。
- 如果文件已存在 → 拋出
示例:創(chuàng)建一個(gè)新文件(默認(rèn)屬性)
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("文件創(chuàng)建成功: " + file.toAbsolutePath());
} catch (FileAlreadyExistsException e) {
System.err.println("文件已存在: " + file);
} catch (IOException e) {
System.err.println("創(chuàng)建文件失敗: " + e.getMessage());
}
}
}
運(yùn)行結(jié)果(文件不存在時(shí)):
文件創(chuàng)建成功: /path/to/example.txt
如果文件已存在:
文件已存在: example.txt
2. 創(chuàng)建臨時(shí)文件createTempFile()
有時(shí)候我們需要一個(gè) 臨時(shí)文件(例如寫緩存、處理臨時(shí)數(shù)據(jù)、測試用文件),這時(shí)就用 Files.createTempFile()。
- 方法重載:
createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>...)→ 允許指定目錄、文件前綴、后綴。createTempFile(String prefix, String suffix, FileAttribute<?>...)→ 使用默認(rèn)的 臨時(shí)文件目錄(不同系統(tǒng)目錄不同,比如 Linux 通常是/tmp/)。
- 文件命名規(guī)則: 系統(tǒng)會自動在文件名里加上一個(gè) 隨機(jī)數(shù),保證唯一性。
示例:創(chuàng)建臨時(shí)文件(默認(rèn)目錄)
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("臨時(shí)文件已創(chuàng)建: " + tempFile.toAbsolutePath());
} catch (IOException e) {
System.err.println("創(chuàng)建臨時(shí)文件失敗: " + e.getMessage());
}
}
}
運(yùn)行結(jié)果(Linux 下可能是):
臨時(shí)文件已創(chuàng)建: /tmp/myapp_1234567890.tmp
Windows 下可能是:
臨時(shí)文件已創(chuàng)建: C:\Users\yaoxin\AppData\Local\Temp\myapp_987654321.tmp
總結(jié)
- 對比
createFile()與createTempFile()createFile()→ 需要指定路徑,文件名固定,如果存在會報(bào)錯(cuò)。createTempFile()→ 自動生成不重復(fù)的文件名,適合做臨時(shí)數(shù)據(jù)存儲。
- 安全性
createFile()的 原子操作 避免了“檢查-再創(chuàng)建”中可能被惡意程序插入的漏洞。- 臨時(shí)文件常用于多線程/多進(jìn)程場景,避免命名沖突。
- 實(shí)際應(yīng)用場景
createFile()→ 初始化配置文件、日志文件、導(dǎo)出文件等。createTempFile()→ 大數(shù)據(jù)處理中間文件、Web 服務(wù)的緩存文件、測試時(shí)的臨時(shí)文件。
以上就是Java文件操作之創(chuàng)建常規(guī)文件與臨時(shí)文件的詳細(xì)內(nèi)容,更多關(guān)于Java創(chuàng)建常規(guī)文件與臨時(shí)文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源配置的示例詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源配置的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12
Java編程Webservice指定超時(shí)時(shí)間代碼詳解
這篇文章主要介紹了Java編程Webservice指定超時(shí)時(shí)間代碼詳解,簡單介紹了webservice,然后分享了通過使用JDK對Webservice的支持進(jìn)行Webservice調(diào)用實(shí)現(xiàn)指定超時(shí)時(shí)間完整示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11
在啟動后臺 jar包時(shí),使用指定的 application.yml操作
這篇文章主要介紹了在啟動后臺 jar包時(shí),使用指定的 application.yml操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Spring5源碼解析之Spring中的異步和計(jì)劃任務(wù)
本篇文章主要介紹了Spring5源碼解析之Spring中的異步和計(jì)劃任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-10-10
Spring自定義注解實(shí)現(xiàn)接口版本管理
這篇文章主要介紹了Spring自定義注解實(shí)現(xiàn)接口版本管理,RequestMappingHandlerMapping類是與 @RequestMapping相關(guān)的,它定義映射的規(guī)則,即滿足怎樣的條件則映射到那個(gè)接口上,需要的朋友可以參考下2023-11-11
詳解springboot?springsecuroty中的注銷和權(quán)限控制問題
這篇文章主要介紹了springboot-springsecuroty?注銷和權(quán)限控制,賬戶注銷需要在SecurityConfig中加入開啟注銷功能的代碼,權(quán)限控制要導(dǎo)入springsecurity和thymeleaf的整合依賴,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03
SpringBoot中@Data注解的深度解析與實(shí)戰(zhàn)應(yīng)用
@Data是Lombok庫提供的一個(gè)核心注解,它通過簡化Java開發(fā)中常見的樣板代碼來顯著提高開發(fā)效率,下面小編就為大家詳細(xì)介紹一下@Data注解的詳細(xì)使用吧2025-10-10

