背景
最近在做一個專案,在服務端涉及到檔案的複製操作,於是想到了 Java 中 FileInputStream
類的 transferTo()
方法。這裏簡單記錄一下用法,另外,如果目標檔案已經存在,該如何處理這種情況呢?是出現異常還是覆蓋寫入?
使用 transferTo()
方法複製檔案
話不多說,直接上程式碼。下面是使用 transferTo()
方法將一個檔案的內容複製到另一個檔案的基本步驟。
首先,你需要匯入必要的類:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;
接著,建立 File
類的例項以指代原始檔和目標檔案:
// 建立原始檔和目標檔案物件 File sourceFile = new File("path/to/source/file.txt"); File targetFile = new File("path/to/target/file.txt");
然後,使用 FileInputStream
和 FileOutputStream
建立輸入流和輸出流:
try (FileInputStream inputStream = new FileInputStream(sourceFile); FileOutputStream outputStream = new FileOutputStream(targetFile)) { // 從原始檔讀取內容並傳輸到目標檔案 // 呼叫 transferTo() 方法進行檔案傳輸 inputStream.transferTo(outputStream); System.out.println("檔案傳輸成功"); } catch (IOException e) { // 如果發生異常,則列印異常資訊 e.printStackTrace(); }
處理檔案已存在的情況
transferTo()
方法本身不會處理目標檔案已存在的情況。如果目標檔案存在,原始檔的內容將覆蓋目標檔案現有的內容。在某些情況下,這可能不是你所希望的結果。爲了避免資料的不必要丟失,你可能需要在檔案傳輸前進行檢查。
以下是一種檢查目標檔案是否已存在,並根據需要處理的方法:
if(targetFile.exists()) { // 你可以在這裏決定是否要覆蓋檔案,或者是重新命名等其他操作 System.out.println("目標檔案已存在。"); }
在這段程式碼片段中,exists()
方法用於檢查目標檔案是否存在。你可以在這基礎上增加邏輯以決定如何處理這個問題。