在 Java 中將文字附加到另外文字檔案

Mohammad Irfan 2023年10月12日
  1. 使用 Java 中的 FileOutputStream 類將文字附加到文字檔案
  2. 使用 Java 中的 FileWriter 類將文字附加到文字檔案
  3. 使用 Java 中的 BufferedWriter 類將文字附加到文字檔案
  4. 使用 Java 中的 Files 類將文字附加到文字檔案
  5. 在 Java 中將文字附加到文字檔案
在 Java 中將文字附加到另外文字檔案

本教程介紹瞭如何在 Java 中向一個現有的文字檔案追加文字。我們還列出了一些示例程式碼以更好地指導你。

讀取和寫入是你在處理檔案時可以執行的兩項最基本的操作。在 Java 中有多種方法可以將資料寫入或附加到檔案中。在本文中,我們將瞭解附加到文字檔案的四種不同方式。

使用 Java 中的 FileOutputStream 類將文字附加到文字檔案

FileOutputStream 類用於將二進位制資料寫入檔案。它主要用於 intfloat 等原始資料型別,但它也可用於編寫面向字元的資料。

字串在寫入之前首先需要轉換為位元組陣列;為此,你可以使用 getBytes() 方法。我們還需要將 true 作為第二個引數傳遞給它的建構函式。第二個引數用於布林追加標誌,它的完成表明我們正在嘗試追加到現有檔案。

如果它被忽略,那麼 FileOutputStream 類將覆蓋檔案的內容。如果檔案不在上述位置,它將建立一個新檔案。

這是一個示例,我們嘗試將句子 The quick brown fox jumps over the lazy dog 附加到現有檔案中。\r\n 用於在新行的開頭插入文字。

import java.io.FileOutputStream;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileOutputStream f = new FileOutputStream(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes(); // converting string into byte array
      f.write(byteArr);
      f.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 FileWriter 類將文字附加到文字檔案

Java FileWriter 類旨在將字元流寫入檔案。我們可以使用它來將字元或字串附加到現有檔案或新檔案中。如果該檔案不存在於上述路徑中,則會建立一個新檔案,並將資料寫入此新檔案。

與之前的 FileOutputStream 類不同,我們不需要在寫入之前將字串轉換為位元組。但是,我們還需要將 true 作為第二個引數傳遞給 FileWriter 建構函式,這表明我們正在嘗試附加到現有檔案。

如果省略,它將覆蓋檔案的現有內容。下面的程式碼演示瞭如何使用 FileWriter 向現有檔案追加一行。

import java.io.FileWriter;
public class SimpleTesting {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      fw.write(lineToAppend);
      fw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 BufferedWriter 類將文字附加到文字檔案

FileWriter 類通常由其他編寫器包裝,例如 BufferedWriter。完成此過程是因為 BufferedWriterFileWriter 高效得多。

當我們有多個寫操作時,BufferedWriterFileWriter 更受歡迎。它使用內部緩衝儲存器來儲存必須附加到檔案中的資料。當此緩衝區已滿,或者我們不再有任何其他內容要附加時,BufferedWriter 將寫入實際檔案。

它將大塊資料從其緩衝區寫入檔案,而不是頻繁寫入;他導致較少的系統呼叫。因此,它比普通的 FileWriter 高效得多。

但是如果我們只有一個寫操作,那麼 BufferedWriter 會在寫過程中新增另一個步驟。所以,最好只使用 FileWriter

要使用 BufferedWriter,我們首先需要一個 FileWriter 物件,我們將把它傳遞給 BufferedWriter 的建構函式。確保對附加標誌使用 true

以下程式碼演示了 BufferedWriter 在 Java 中的工作方式。

import java.io.BufferedWriter;
import java.io.FileWriter;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      BufferedWriter bw = new BufferedWriter(fw);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      bw.write(lineToAppend);
      bw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 Files 類將文字附加到文字檔案

Files 實用程式類是在 Java 7 中新增的,它提供了另一種將資料寫入檔案的方法;我們使用 Files.write() 方法來做到這一點。此方法需要檔案路徑,還需要附加字串的位元組陣列。

我們還需要指定 StandardOpenOption.APPEND 將文字附加到現有檔案。確保檔案存在於給定的路徑中;否則,它將返回一個 NoSuchFileException

如果我們必須多次寫入同一個檔案,這種方法不是首選,因為該檔案也會被多次開啟和關閉,從而降低整體效能。

下面的程式碼演示了 Files.write() 方法如何在 Java I/O 中工作。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class Main {
  public static void main(String args[]) {
    try {
      String file = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes();
      Files.write(Paths.get(file), byteArr, StandardOpenOption.APPEND);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

在 Java 中將文字附加到文字檔案

Java 提供了多種檔案處理選項。我們可以使用 FileOutputStreamFileWriterBufferedWriterFiles 實用程式類將資料附加到檔案中。

對於 FileOutputStreamFiles 實用程式類,我們首先需要將字串轉換為位元組陣列,然後將其傳遞給 write() 方法。

當我們必須多次將少量資料寫入同一個檔案時,首選 BufferedWriter。另一方面,FileWriterFiles 實用程式類將為大量寫入進行多個系統呼叫;這會降低它們的整體效能。

相關文章 - Java File

相關文章 - Java IO