首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java NIO Files.write 一行代碼實現字符串寫入文件

     編輯:Java 相關知識

JDK 7 引入的 java.nio.file.Files API 讓文件操作變得極其簡潔。本文展示如何用一行核心代碼完成字符串寫入文件,並解析其底層機制與常用變體。

核心代碼

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class StringToFile {
    public static void main(String[] args) throws IOException {
        String msg = "Hello, NIO!";
        // 一行搞定:路徑、字節數據、默認選項(創建、截斷、寫入)
        Files.write(Paths.get("./duke.txt"), msg.getBytes());
    }
}

關鍵點解析

1. 方法簽名

public static Path write(Path path, byte[] bytes, OpenOption... options)

2. 默認行為(無 options 時)

  • CREATE_NEW:文件不存在則創建
  • TRUNCATE_EXISTING:文件存在則清空重寫
  • WRITE:打開寫入模式

3. 常用變體

需求代碼說明
追加寫入 Files.write(path, bytes, StandardOpenOption.APPEND) 文件末尾追加,不截斷
指定編碼寫入字符串 Files.writeString(path, str, StandardCharsets.UTF_8) JDK 11+,無需手動 getBytes()
寫入多行 Files.write(path, lines, StandardCharsets.UTF_8) lines 為 Iterable<String>
大文件流式寫入 Files.newBufferedWriter(path).write(...) 避免一次性載入內存

進階:原子寫入模式

臨時文件寫入 → 重命名替換,保證寫入原子性(要麼全寫成功,要麼原文件完好)。

Path temp = Files.createTempFile("prefix", ".tmp");
Files.write(temp, data);  // 寫臨時文件
Files.move(temp, targetPath, StandardCopyOption.ATOMIC_MOVE);  // 原子替換

對比傳統 IO 寫法

// 老式 FileWriter(需 try-with-resources 關閉流)
try (FileWriter fw = new FileWriter("duke.txt")) {
    fw.write(msg);
}

// NIO Files.write 內部已處理資源關閉、異常安全,代碼更健壯

Files.write 是現代 Java 文件寫入的首選:簡潔、安全、功能豐富。配合 writeString(JDK 11+)更是字符串處理的利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved